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).
Este ejemplo ilustra cómo leer el valor de cada uno de esos bytes mediante
la función
EEPROM.wtite ().
Estos valores permanecerán en la EEPROM cuando la placa está apagada y pueden ser recuperados más tarde por otro programa.
Hardware necesario
- Arduino o Genuino
No hay circuito para este ejemplo.
Esquema
Código
/*
* Escritura en la EEPROM
*
* Almacena valores leídos de la entrada analógica 0 en la EEPROM.
* Estos valores se mantendrán en la EEPROM cuando la placa está
* desconectada y pueden ser recuperados más tarde por otro programa.
*/
#include <EEPROM.h>
/** la dirección actual en la EEPROM (por ejemplo, el byte que vamos a escribir a continuacion) **/
int addr = 0;
void setup() {
/** Setup vacio. **/
}
void loop() {
/***
Es necesario dividir por 4 el valor de las entradas analógicas, porque van
de 0 a 1023 y cada byte de la EPROM sólo puede tener un valor de 0 a 255.
***/
int val = analogRead(0) / 4;
/***
Escribe el valor en el correspondiente byte de la EEPROM. Estos valores
permanecerán allí cuando la placa está apagada.
***/
EEPROM.write(addr, val);
/***
Avanza a la siguiente dirección, cuando llega al final regresa de nuevo
al principio.
Los procesadores AVR más grandes tienen tamaños más grandes de EEPROM, por ejemplo:
- Arduino Duemilanove: 512 bytes de EEPROM.
- Arduino Uno: 1 KB de EEPROM.
- Arduino Mega: 4 KB de EEPROM.
En lugar de la codificación dura de la longitud, se debe utilizar la función
de longitud pre-proporcionada. Esto hará que su código sea portable para todos
los procesadores AVR.
***/
addr = addr + 1;
if (addr == EEPROM.length()) {
addr = 0;
}
/***
Como los tamaños de EEPROM son potencias de dos, es posible el desbordamiento
de una dirección de la EEPROM con un bit a bit de longitud - 1.
++addr &= EEPROM.length() - 1;
***/
delay(100);
}
No hay comentarios:
Publicar un comentario