Diferencia entre revisiones de «EEPROM»

De ArduWiki
Saltar a: navegación, buscar
(Descripción)
(Ejemplo 1)
Línea 33: Línea 33:
 
   byte data = B11001;    //25 en binario
 
   byte data = B11001;    //25 en binario
 
   EEPROM.write(Direccion, data);
 
   EEPROM.write(Direccion, data);
   int sensor = analogRead(0) / 4;
+
   int sensor = analogRead(0) / 4;   //Recuerda que el valor debe estar entre 0~1024.
 
   EEPROM.write(Direccion + 1, sensor);
 
   EEPROM.write(Direccion + 1, sensor);
 
   //Leer
 
   //Leer

Revisión del 21:46 25 abr 2019

Descripción

Es una memoria no volátil para mantener datos después de apagado nuestro Arduino. Se puede grabar constantes desde un boceto con algunas instrucciones especiales. Al igual que la memoria Flash tiene una vida util de unas 100,000 ciclos de escritura. Esta memoria solo puede leerse byte a byte y su uso puede se un poco incómodo. También es algo más lenta que la SRAM.

Memoria en cada Arduino
Tipo Arduino UNO Arduino MEGA Arduino MKR1000
flash 32K 256K 256K
Flash-bootloader 0.5K 8K -
SRAM 2K 8K 32K
EEPROM 1K 4K -

Comentarios

  • La EEPROM de tu Arduino es especialmente util para guardar datos como: MAC, IP, constantes de calibración de algún sensor y claves de usuario.
  • Para actuar con esta memoria debes usar la libreria EEPROM.h que esta por defecto en el IDE.
  • Debes trabajar con direcciones y hacerlo byte a byte, tanto para leer como para escribir.
  • Las direcciones van de 0 a 99 y podrás almacenar datos de 0 a 255. Para datos mas grandes debes dividirlos en bytes. Por ejemplo si el dato es tipo unsigned int lo debes dividir entre 4 y luego de recuperar multiplicar por 4 (pierdes presicion).

Ejemplo 1

Leer y escribir un solo byte.

#include <EEPROM.h>
int Direccion = 0;          //Variable con la posición de memoria

void setup(){
   Serial.begin(9600);
   //Escribir
   byte data = B11001;    //25 en binario
   EEPROM.write(Direccion, data);
   int sensor = analogRead(0) / 4;   //Recuerda que el valor debe estar entre 0~1024.
   EEPROM.write(Direccion + 1, sensor);
   //Leer
   byte val1 = EEPROM.read(Direccion);
   Serial.print(“En la dirección “);
   Serial.print(Direccion);
   Serial.print(” se encuentra la información: “);
   Serial.println(val1, DEC);
   delay(100);
   byte val2 = EEPROM.read(Direccion + 1);
   Serial.print(“En la dirección “);
   Serial.print(Direccion + 1);
   Serial.print(” se encuentra la información: “);
   Serial.println(4*val2, DEC);
}

void loop(){
   //Nada
}

Vea también

Referencias