Si bien el grueso de la memoria de un Arduino está representado por la memoria volátil, que se borra una vez se corta la alimentación o resetea, estas placas poseen también una memoria no volátil donde almacenar permanentemente una serie de datos: La memoria EEPROM (Electrically Erasable Programmable Read-Only Memory) . Según el modelo varía entre los 512 bytes y los 4KB.
Para trabajar con esta memoria necesitamos hacer uso de la librería EEPROM, que viene junto al IDE oficial de Arduino. Posee un método para escribir, write(), y otro para leer, read(). Tanto para leer como para escribir se trabaja por direcciones y byte a byte. Esto implica que enl modelo de 512 bytes tendías posiciones de 0 a 511 y en cada una de ellas podrías guardar un valor comprendido entre 0 y 255. El primer ejemplo que vamos a ver es muy simple: vamos a escribir el mismo valor en todas las posiciones de la memoria y luego a leerlo. Una chorrada, pero muy didáctico:
//Se incluye la librería EEPROM #include <EEPROM.h> //Creamos una variable para el valor de la posición de memoria //en la que se va a almacenar el dato. int Direccion = 0; //Creamos una variable para leer los valores de la memoria EEPROM byte valor; void setup() { Serial.begin(9600); // La "B" indica que pasamos los datos // en binario (en decimal sería un 18) byte Informacion = B10010; //para el ejemplo nos pateamos //512 bytes. for (int i = 0; i < 512; i++){ EEPROM.write(i, i); } } void loop() { while(Direccion < 512){ valor = EEPROM.read(Direccion); Serial.print("En la dirección "); Serial.print(Direccion); Serial.print(" almacenamos el valor: "); // DEC para mostrar el resultado en decimal Serial.print(valor, DEC); delay(100); Direccion++; } }
Más adelante seguiremos viendo otros ejemplos de programación con el IDE de Arduino.