eeprom-log.ino
La EEPROM del microcontrolador conserva datos sin alimentación (mínimo 100.000 escrituras). EEPROM.put solo escribe lo que cambia, cuidando la memoria; el índice de reanudación se releé al arrancar.
Hardware necesario
Un Arduino Duemilanove (ATmega168 o 328P, 16 MHz, 5 V) con su cable mini-USB-B; el puerto serie aparece tras instalar el driver FTDI. Ninguno (cualquier fuente de tensión en A0 para probar: potenciómetro o LDR).
Cableado
Nada especial; conecte A0 a un divisor o sensor analógico.
Funcionamiento
Cada registro son 16 bytes teóricos (2 usados); la cabecera en la dirección 0 guarda el número de medidas para reanudar tras reiniciar. En el Arduino IDE, elija « Arduino Duemilanove » (o « Diecimila » para placas muy antiguas) y el puerto FTDI, y pulse Subir. El ATmega168 solo deja 14 KB para el sketch.
Para ir más lejos
Etiquete las entradas (contador, fecha) y vuelque el diario por serie bajo demanda.
eeprom-log.ino
// Journalise une valeur analogique dans l'EEPROM (4 Ko ou 1 Ko).
#include <EEPROM.h>
const int ENTREE = 16; // taille d'un enregistrement (octets)
const int MAX = EEPROM.length() / ENTREE;
int compteur = 0;
void setup() {
Serial.begin(9600);
// Relit le dernier indice ecrit (0xFFFF = vierge)
EEPROM.get(0, compteur);
if (compteur == 0xFFFF || compteur > MAX) compteur = 0;
Serial.print(F("Reprise a l'entree "));
Serial.println(compteur);
}
void loop() {
int valeur = analogRead(A0);
int idx = compteur % MAX;
EEPROM.put(2 + idx * ENTREE, valeur); // 2 octets par entree
EEPROM.put(0, ++compteur); // memoire du rang
Serial.print(idx); Serial.print(F(" -> ")); Serial.println(valeur);
delay(2000);
}