Icono del sitio AranaCorp

Usando EEPROM con Arduino

La EEPROM es una memoria interna del microcontrolador que permite almacenar datos después de reiniciar la tarjeta. Cuando se trabaja con microcontroladores, es útil mantener los datos en la memoria, especialmente cuando la tarjeta se apaga, ya sea intencionalmente o no, como en el caso de una pérdida de energía eléctrica.

Hardware

Principio de funcionamiento

La EEPROM es una ubicación de memoria especial del microcontrolador. Es un conjunto de registros en los que se almacenan datos que permanecen en la memoria incluso después de apagar la tarjeta. Es una memoria de «sólo lectura» comparada con la memoria de «acceso aleatorio» (como la RAM) que se borra en cada ciclo de encendido. El tamaño de la memoria varía según el microprocesador de la tarjeta.

Limitación de la EEPROM

Una cosa importante a tener en cuenta es que la EEPROM tiene un tamaño y una vida útil limitados. Las células de memoria pueden ser leídas tantas veces como sea necesario, pero el número de ciclos de escritura está limitado a 100.000. Es aconsejable prestar atención al tamaño de los datos almacenados y a la frecuencia con que se desea actualizarlos.
Si desea registrar los datos de una flota de sensores en tiempo real para trazar curvas, lo mejor es recurrir a un módulo de tarjeta SD para almacenar los datos.

Código

Para interactuar con la EEPROM, usamos la biblioteca EEPROM.h que permite escribir y leer datos en la memoria. Para esto usaremos dos funciones:

Se pueden utilizar otras funciones de la biblioteca dependiendo de cómo se utilice la EEPROM.

//Libraries
#include <EEPROM.h>//https://www.arduino.cc/en/Reference/EEPROM

void setup(){
//Init Serial USB
Serial.begin(9600);
Serial.println(F("Initialize System"));
//Write data into eeprom
  int address = 0;
  int boardId = 18; 
  EEPROM.put(address, boardId);
  address += sizeof(boardId); //update address value

  float param = 26.5;
  EEPROM.put(address, param); 
  
  //Read data from eeprom
  address = 0;
  int readId;
  EEPROM.get(address, readId);
  Serial.print("Read Id = ");
  Serial.println(readId);
  address += sizeof(readId); //update address value
  
  float readParam;
  EEPROM.get(address, readParam);
  Serial.print("Read param = ");
  Serial.println(readParam);
  

 }

void loop(){}

Resultado

Los valores leídos se corresponden bien con los valores registrados. Puedes quitar la parte de escritura y reiniciar el código para comprobar que los valores están almacenados.

Aplicaciones

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código

Salir de la versión móvil