La memoria EEPROM es muy ignorado entre los fanaticos de Arduino, pero nadie posee su función que les ayudará para toda la vida. La memoria EEPROM tiene la función de almacenar valores realizados durante el transcurso de uso de arduino; si desea reiniciar o la energia de arduino se agote, los valores quedará almacenado.
Un ejemplo más claro es cuando trabajamos con servomotores, ya que cuando se reinicia, arduino manda a 0 los servomotores de manera inadecuada. Con la memoria EEPROM se guardará las posiciones de los servomotores, y cuando se reinicie nuestro arduino, continuará ejecutandose donde se quedó.
Lo unico malo es que guarda valores de 8 bits, la memoria que tiene UNO es de 1Kb, lo suficiente para guardar algunos valores, pero si deseas guardar los valores por bits, o darle una expresion en 8 bits.
Escribir en la memoria.
int valor1 = 0 , valor2 = 5;
int direccion1 = 0, direccion2 = 1;
void contar(){
valor1++; EEPROM.write(direccion1, valor1);
valor2 = valor2 + 5; EEPROM.write(direccion2, valor2);
}
Leer la memoria.
int lectura1, lectura2;
void cargar_estado(){
lectura1 = EEPROM.read(direccion1); valor1 = lectura1;
lectura2 = EEPROM.read(direccion2); valor2 = lectura2;
}
Limpiar memoria.
EEPROM.write(direccion1, 0); EEPROM.write(direccion2, 0);
El siguiente ejemplo muestra el valor enviado por el puerto serial, en el setup lee el dato almacenado y lo establece, y después lo imprime. en el loop le daremos los valores, si notarás que se muestra valores mayor de 8 bits como 47, eso es debido que está los valores del teclado, en el lenguaje ASCII 47 = 0 y 57 = 9. En un valor entero del puerto serial, podemos almacenar los valores de 0 a 255 que equivale a 8 bits (un caracter), pero podemos almacenar otra palabra en otra dirección para formar una palabra de 16 bits.
En este código colocamos una forma de aumentar el valor y escribirlo en BCD, y después guardar el valor, si se resetea arduino, donde el valor se guardo empezará a contar hasta llegar a 9, si está en 9 su siguiente conteo será 0.