eeprom-contre.ino
L'EEPROM 1 Ko de l'ATmega328P conserve les données sans alimentation : ce compteur de démarrages survit aux coupures de courant. Le mot magique évite de lire du bruit au premier lancement — le patron de toute persistance sur Nano.
Matériel requis
Un Arduino Nano classique (ATmega328P à 16 MHz, brochage DIL 30 broches sur breadboard, USB mini-B, logique 5 V, broche RESET en bas à gauche). Arduino Nano seule ; l'EEPROM est interne à la puce, aucun composant externe.
Câblage
Aucun câblage ; pour réinitialiser le compteur, flasher n'importe quel croquis appelant EEPROM.put(0, 0).
Fonctionnement
EEPROM.get/put lisent/écrivent des types arbitraires (ici uint32_t sur 4 octets). Chaque put n'écrit que les octets qui changent, préservant la durée de vie des cellules.
Exécution
Dans l'IDE Arduino, sélectionnez la carte Arduino Nano et le processeur ATmega328P, choisissez le port série puis téléversez. L'alimentation 5 V de la carte convient aux capteurs 5 V ; sinon utiliser le 3,3 V des broches adaptées.
Variantes
Stockez un tampon circulaire de mesures pour un enregisteur de secours, ou une table de consignes modifiable par série sans reflash.
eeprom-contre.ino
// L'EEPROM 1 Ko du 328P survit a la coupure : compteur de demarrages.
// Attention : ecriture use la cellule (~100 000 cycles) : journalisez.
#include <EEPROM.h>
const int ADRESSE = 0;
const uint32_t MAGIC = 0xA5A51234; // verifie que l'EEPROM est initialisee
void setup() {
Serial.begin(9600);
uint32_t magic = 0;
EEPROM.get(ADRESSE + 4, magic);
uint32_t compteur;
if (magic != MAGIC) {
compteur = 0;
EEPROM.put(ADRESSE + 4, MAGIC);
Serial.println(F("EEPROM initialisee"));
} else {
EEPROM.get(ADRESSE, compteur);
}
compteur++;
EEPROM.put(ADRESSE, compteur);
Serial.print(F("Demarrage n°"));
Serial.println(compteur);
// Lecture de controle apres ecriture (bonne habitude AVR)
uint32_t verif;
EEPROM.get(ADRESSE, verif);
Serial.println(verif == compteur ? F("verif OK") : F("verif KO"));
}
void loop() {}