eeprom-log.ino

LilyPad Arduino · Archivo : eeprom-log.ino · Lenguaje : Arduino · Uso : Conserver des relevés dans l'EEPROM après une coupure de courant

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

Una LilyPad Arduino (ATmega168V/328V, 8 MHz, 3,3 V) con sus pastillas para coser, programada con cable FTDI (breakout) y alimentada por 3,7 V (LiPo) o 5 V en V-REG. 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 « LilyPad Arduino » y el puerto FTDI, y suba. El hilo conductor añade unos ohmios de resistencia: mantenga tiradas cortas y aísle los cruces.

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);
}

← Volver a la ficha