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.