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 cómo los métodos PUT y GET proporcionan un comportamiento
diferente a escribir y leer, que cuando se trabaja con bytes individuales.
Obtiene las diferentes variables de la EEPROM y recupera un número de bytes
que se relaciona con el tipo de dato de la variable.
Hardware necesario
- Arduino o Genuino
No hay circuito para este ejemplo.
Esquema
Código
// Ejemplo de eeprom_get.
// Muestra el uso del método 'EEPROM.get()'.
// Para pre seleccionar los datos de la 'EEPROM', ejecutar el programa 'EEPROM.put'.
// Este programa se ejecutará sin que los valores mostrados se muestren a partir de lo que cada vez que ya está en la EEPROM.
// Esto puede hacer que el objeto serial imprima una cadena larga de basura si no hay carácter nulo dentro de una de las cadenas cargadas.
// Escrito por Christopher Andrews 2015
// Publicado bajo licencia MIT.
#include <EEPROM.h>
void setup() {
float f = 0.00f; //Variable para almacenar los datos leidos de la EEPROM.
int eeAddress = 0; //Direccion de la EEPROM donde se empeza a leer
Serial.begin(9600);
while (!Serial) {
; // espera a que el puerto serie se conecte. Solo necesario para el puerto USB nativo
}
Serial.print("Leido un float de la EEPROM: ");
//Obtiene un dato float de la EEPROM en la ubicacion 'eeAddress'
EEPROM.get(eeAddress, f);
Serial.println(f, 3); //Estopuede imprimir 'ovf, nan' si los datos de la EEPROM no son float validos.
// get también devuelve una referencia a 'f', que se puede utilizar en línea.
// Por ejemplo: Serial.print( EEPROM.get( eeAddress, f ) );
//Get se puede utilizar también con estructuras personalizadas.
// Hay una funcion separada para esto.
secondTest(); //Ejecuta la prueba siguiente.
}
struct MyObject {
float field1;
byte field2;
char name[10];
};
void secondTest() {
int eeAddress = sizeof(float); //Cambia la direccion al siguiente byte despues de float 'f'.
MyObject customVar; //Variable para almacenar el objeto personalizado de la EEPROM.
EEPROM.get(eeAddress, customVar);
Serial.println("Leido un objeto personalizado de la EEPROM: ");
Serial.println(customVar.field1);
Serial.println(customVar.field2);
Serial.println(customVar.name);
}
void loop() {
/* Bucle vacio */
}
No hay comentarios:
Publicar un comentario