El microcontrolador en las placas Arduino y Genuino tiene 512 bytes de: memoria EEPROM cuyos
valores se mantienen cuando la placa está apagada (como un pequeño disco
duro).
El propósito de este
ejemplo es mostrar el método EEPROM.put () que escribe datos en la EEPROM
usando también la función EEPROM.update () que escribe datos sólo si es
diferente del contenido previo de las unicaciones a ser escritas. El número
de bytes escritos se relaciona con el tipo de datos o la estructura
personalizada de la variable a ser escrita.
Hardware necesario
- Arduino o Genuino
No hay circuito para este ejemplo.
Esquema
Código
//// Ejemplo eeprom_put.
//// Esto muestra cómo utilizar el método EEPROM.put (). Además, este programa
//// pre-establecera los datos de la EEPROM para el programa ejemplo eeprom_get.
//// Tenga en cuenta, que a diferencia de la versión de un solo byte EEPROM.write (),
//// el método put utilizará la semántica de actualización.
//// Como en el metodo de un byte sólo se escribirán en la memoria EEPROM los datos
//// que son realmente diferentes.
//// Escrito por Christopher Andrews 2015
//// Publicado bajo licencia MIT.
#include <EEPROM.h>
struct MyObject {
float field1;
byte field2;
char name[12];
};
void setup() {
Serial.begin(9600);
while (!Serial) {
; // espera a que el puerto seie se conecte. Solo necesario para el puerto USB nativo
}
float f = 123.456f; //Variable a ser escrita en la EEPROM.
int eeAddress = 0; //Ubicacion donde queremos poner los datos.
//Una sola llamada, primero la direccion y despues el objeto.
EEPROM.put(eeAddress, f);
Serial.println("Escrito un tipo de datos float!");
// Put está diseñado para su uso también con estructuras personalizadas .
//Datos a almacenar.
MyObject customVar = {
3.14f,
65,
"Trabajando!"
};
eeAddress += sizeof(float); //Cambia la direccion al siguiente byte despues de float 'f'.
EEPROM.put(eeAddress, customVar);
Serial.print("Escrito un tipo de datos personalizado!");
Serial.print ("Ver el programa eeprom_get para ver como recuperar los valores!");
}
void loop() {
/* Bucle vacio */
}
Una duda, si guardo un char por ejemplo una clave "wedsedr" en la posicion 0 con "put", esa clave queda ahi? no ocupa espacio en la posicion 1 o siguientes ?
ResponderEliminarNice example, thanks for the time and effor to make this tutorial, in deed, put and get, are great options, when you need to save more than a byte.
ResponderEliminarKudos.
-Alex