EEPROM Put

  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

Circuito


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 */
}

2 comentarios:

  1. 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 ?

    ResponderEliminar
  2. Nice 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.

    Kudos.
    -Alex

    ResponderEliminar