Cómo tocar datos de la EEPROM
Cómo trabajar con controladores industriales Arduino
8 enero, 2019 por
Cómo tocar datos de la EEPROM
Boot & Work Corp. S.L., Support Team

Qué es una EEPROM

La EEPROM es una memoria cuyos valores se conservan cuando la placa Arduino del controlador de automatización Arduino está apagada. A continuación, hay ejemplos con la función EEPROM.write(), EEPROM.read(), EEPROM.put() y EEPROM.get(). Muestran cómo escribir y leer de la EEPROM.

En nuestros controladores lógicos programables para la automatización industrial,

Ardbox PLC Arduino >>> Ardbox PLC Arduinotiene 1KB 
M-Duino PLC Arduino >>> M-Duino with 4KB EEPROM tiene 4KB de EEPROM.

Requisitos

            20 I/Os PLC >>


Software

En este ejemplo de Arduino EEPROM veremos cómo utilizar las funciones EEPROM.write(), EEPROM.read(), EEPROM.put() y EEPROM.get().

Ejemplo EEPROM.write()

El primer código de ejemplo de la EEPROM de Arduino implementa cómo almacenar un byte de la entrada analógica 0 en la memoria de la EEPROM usando EEPROM.write(). EEPROM.write() almacena un byte en la EEPROM: 

#include <EEPROM.h>

int addr = 0; // current adress in the EEPROM

void setup() {
  /** Empty setup. **/
}

void loop() {
  /***
    Need to divide by 4 because analog inputs range from
    0 to 1023 and each byte of the EEPROM can only hold a
    value from 0 to 255.
  ***/

  int val = analogRead(0) / 4;
  /***
    Write byte val to addres addr of the EEPROM.
  ***/
  EEPROM.write(addr, val); 
  /***
    Increment value addr to store next byte 
    to the EEPROM.
  ***/
  addr = addr + 1;
  if (addr == EEPROM.length()) {
    addr = 0;
  }

  delay(100);
}


Ejemplo EEPROM.read()

El segundo código de ejemplo implementa cómo leer un byte de la memoria EEPROM utilizando la función EEPROM.read():

#include <EEPROM.h>

int address = 0;
byte value;

void setup() {
  // initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Ardbox only
  }
}

void loop() {
  // read a byte from the current address of the EEPROM
  value = EEPROM.read(address);

  // print value to the serial port
  Serial.print(address);
  Serial.print("\t");
  Serial.print(value, DEC);
  Serial.println();

  address = address + 1;
  if (address == EEPROM.length()) {
    address = 0;
  }

  delay(500);
}

 

Ejemplo EEPROM.put()

El tercer código de ejemplo se implementa como utilizar EEPROM.put(). EEPROM.put() es una función que permite escribir en la memoria EEPROM, pero con EEPROM.put() puedes escribir datos más complejos en el EEPROM como una estructura, float, etc... 

#include <EEPROM.h>

struct MyObject {
  float field1;
  byte field2;
  char name[10];
};

void setup() {

  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Ardbox only
  }

  float f = 123.456f;  //Variable to store in EEPROM.
  int eeAddress = 0;   //Location we want the data to be put.


  //One simple call, with the address first and the object second.
  EEPROM.put(eeAddress, f);

  Serial.println("Written float data type!");

  /** Put is designed for use with custom structures also. **/

  //Data to store.
  MyObject customVar = {
    3.14f,
    65,
    "Working!"
  };

  eeAddress += sizeof(float); //Move address to the next byte after float 'f'.

  EEPROM.put(eeAddress, customVar);
  Serial.print("Written custom data type! \n\nView the example sketch eeprom_get to see how you can retrieve the values!");
}

void loop() {
  /* Empty loop */
}

 

Ejemplo EEPROM.get()

El siguiente código de ejemplo se implementa cómo a nosotros el EEPROM.get(). Es similar al EEPROM.read(),  pero en lugar de leer un byte, con EEPROM.get() puedes obtener datos más complejos como una estructura: 

#include <EEPROM.h>

void setup() {

  float f = 0.00f;   //Variable to store data read from EEPROM.
  int eeAddress = 0; //EEPROM address to start reading from

  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Ardbox only
  }
  Serial.print("Read float from EEPROM: ");

  //Get the float data from the EEPROM at position 'eeAddress'
  EEPROM.get(eeAddress, f);
  Serial.println(f, 3);    //This may print 'ovf, nan' if the data inside the EEPROM is not a valid float.

  secondTest(); //Run the next test.
}

struct MyObject {
  float field1;
  byte field2;
  char name[10];
};

void secondTest() {
  int eeAddress = sizeof(float); //Move address to the next byte after float 'f'.

  MyObject customVar; //Variable to store custom object read from EEPROM.
  EEPROM.get(eeAddress, customVar);

  Serial.println("Read custom object from EEPROM: ");
  Serial.println(customVar.field1);
  Serial.println(customVar.field2);
  Serial.println(customVar.name);
}

void loop() {
  /* Empty loop */
}

Vea más información en la página oficial  Arduino IDE 

Librerías Arduino IDE >>>


Cómo tocar datos de la EEPROM
Boot & Work Corp. S.L., Support Team
8 enero, 2019
Compartir
Archivar

¿Buscas tu controlador lógico programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparación PLC industrial>>>

¿Quieres más información?

¡Rellena el formulario!

¡Cuéntame más!