Busca en nuestro Blog. Encontrarás múltiples aplicaciones, soluciones, ejemplos de código. Navega utilizando la nube de etiquetas o busca utilizando criterios específicos

How to touch up data from the eeprom

Introducción


EEPROM es una memoria cuyos valores se mantienen cuando la placa está apagada. En este ejemplo se muestra cómo escribir y leer desde el EEPROM. En nuestros productos, Ardbox  tiene 1KB y  M-Duino  tiene 4KB de EEPROM.

Requisitos


Ethernet or 20 I/Os PLC:     Ethernet PLC          20 I/Os PLC

EEPROM library :                   EEPROM.h Arduino Library


Software


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

 El primer código de ejemplo se implementa cómo almacenar un byte de la entrada analógica 0 en el EEPROM utilizando el EEPROM.write().  EEPROM.write() almacena un byte en el 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);
}

 

El segundo código de ejemplo se implementa como leer un byte de 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);
}

 

El tercer código de ejemplo se implementa como utilizar EEPROM.put(). EEPROM.put() es una función ha que permite escribir en el EEPROM, pero con EEPROM.put() puede 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 */
}

 

El siguiente código de ejemplo se implementa cómo a nosotros el EEPROM.get(). Es similar que el EEPROM.read(),  pero en lugar de leer un byte con EEPROM.get() puede 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 */
}

 

 Ver más información en la página web oficial de  Ejemplos de Arduino de bibliotecas !
!

 

¿Quieres más información?

Con la tecnología Open Source, puedes ejecutar tus propias instalaciones.

Rellena el formulario y contactaremos contigo lo más pronto posible.

Enviar  Por favor, completa el formulario correctamente.