Guardando datos en Arduino utilizando la memoria EEPROM
Los que han utilizado Arduino se habrán dado cuenta que cuando se reinicia el micro controlador utilizando el botón “reset” o bien, encendiendo y apagando el Arduino, el programa que esté colocado la memoria se reiniciará y no será posible utilizar cualquier dato que se haya tenido antes del reinicio. Si se tiene por ejemplo los datos de un sensor, todo lo que se haya leído se perderá en el reinicio.
Se dice que la memoria de Arduino, donde se almacena el código es una memoria volátil, cuyo contenido se borra cuando se interrumpe el flujo eléctrico. Sin embargo, Arduino al igual que muchos otros micro controladores posee una memoria no volátil, con un esacio de almacenamiento más reducido que la memoria volátil, pero aún así muy útil para nuestros propósitos.
Me estoy refiriendo a la memoria EEPROM (Electrically Erasable Programmable Read-Only Memory, o ROM programable y borrada eléctricamente).
Casi todos los modelos de Arduino tienen una EEPROM disponible, con diferentes capacidades dependiendo del modelo.
La información que se guarde en la memoria EEPROM podrá ser recuperada aún después de reiniciarse el micro controlador.
Para lograr esto Arduino incluye la librería EEPROM que viene junto con Arduino IDE en el paquete que se descarga directamente desde la página oficial de Arduino.
Consta básicamente de dos métodos:
- read()
- write()
Con el método read() se lee los valores que se hayan guardado en determinada posición de memoria, mientras que con el método write() se guarda la información en las posiciones de memoria.
Las posiciones de memoria son el equivalentes a “casillas” donde se guarda la información. La cantidad de “casillas” disponibles depende del modelo. La cantidad de bytes equivale a la cantidad de casillas, por lo que un modelo de 512 bytes tendrá disponibles 512 “casillas” disponibles para guardar datos.
Para escribir datos se utiliza:
write(posición, valor)
Ejemplo:
#include <EEPROM.h> //Se implementa la librería EEPROM void setup() { for (int i = 0; i < 512; i++) EEPROM.write(i, i); } void loop() { }
Para leer los datos se utiliza:
read(posición)
Ejemplo:
#include <EEPROM.h> // empieza en el primer byte (dirección 0) de la EEPROM int direccion = 0; byte valor; void setup() { Serial.begin(9600); } void loop() {
0 comentarios:
Publicar un comentario