Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Guarda datos en EEPROM cuando se produce una interrupcion de alimentacion
- * la entrada D2 esta conectada a 12V , con un puente divisor (12V--R1{2K2}--(D2) ---R2{1K}--->GND)
- * la vin del arduino nano a un 7805 con un condensador electrolitico ...
- * cuando la alimentacion se corta cae rapidamente a 0 , utilizando una interrupccion
- * attachInterrupt(digitalPinToInterrupt(D2), guardaMemoria, FALLING); al pasar de 1 a 0
- * guardaMemoria efectua en este momento el SAVE de los datos en la EEPROM
- * Antonio VILLANUEVA segura
- */
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h> //Pantalla i2c en i2c=0x27 1604A
- #include <EEPROM.h> //Memoria EEPROM datos persistentes
- LiquidCrystal_I2C lcd(0x27,20,4);//Define la pantalla i2c en 0x27 1604A
- //Las 2 entradas digitales que utilizamos D2 para la interrupcion y D7 como lectura de datos
- #define D2 2
- #define D7 7
- int dato =0 ;//dato en RAM
- int dato_EEPROM= 0;//direccion del dato en EEPROM
- void setup(){
- //Serial.begin (9600);
- //while (!Serial) { } //Wait USB Serial ttyUSB
- //El pin D9 directamente conectado a VCC detecta el corte de alimentacion
- pinMode(D2,INPUT); //D2 entrada INTERRUPCION
- pinMode(D7,INPUT); //D7 entrada LECTURA
- recuperaMemoria(); //Lee dato de la EEPROM posicion dato_EEPROM=0 hacia la RAM dato
- lcd.init();
- lcd.backlight();
- lcd.setCursor (0,0);
- lcd.print("DATO RECUPERADO EEPROM ");
- lcd.setCursor(0,1);
- lcd.print (dato);
- delay(2000);
- lcd.clear();
- attachInterrupt(digitalPinToInterrupt(D2), guardaMemoria, FALLING); //Interrupcion PIN D2 llama guardar valor LOW CHANGE FALLING
- }
- void loop(){
- lcd.setCursor(0,0);
- lcd.print ("D2 = ");
- lcd.setCursor(4,0);
- lcd.print (digitalRead (D7) );
- lcd.setCursor(0,1);
- lcd.print("dato = ");
- lcd.setCursor(7,1);
- lcd.print(dato); //Muestra el dato en el LCD
- dato++;
- delay(500);
- }
- //Guarda en EEPROM el dato
- void guardaMemoria(){
- EEPROM.put( dato_EEPROM, dato ); //Grabamos el valor
- delay(1000);//Permite que se descargue
- }
- //Lee el dato de la memoria EEPROM
- int recuperaMemoria( ){
- return EEPROM.get( dato_EEPROM, dato );//Recupera dato de EEPROM hacia RAM
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement