EEPROM Get

  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

Circuito


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