#include <Preferences.h>
Preferences preferences;
struct Params {
uint32_t compteur;
char message[10];
} donnees;
bool ecrire(Params & p) {
preferences.begin("monEspace");
size_t n = preferences.putBytes("medDonnees", &p, sizeof p);
preferences.end();
return n == sizeof p;
}
bool lire(Params & p) {
preferences.begin("monEspace");
size_t n = preferences.getBytes("medDonnees", &p, sizeof p);
preferences.end();
return n != 0;
}
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("--------------------");
if (lire(donnees)) {
Serial.println("Données:");
Serial.print("Compteur = "); Serial.println(donnees.compteur);
Serial.print("message = "); Serial.println(donnees.message);
// on incrémente pour le prochain tour après le reboot
donnees.compteur++;
// on change le message suivant la parité du compteur
if (donnees.compteur % 2) {
strlcpy(donnees.message, "IMPAIR", sizeof donnees.message);
} else {
strlcpy(donnees.message, "PAIR", sizeof donnees.message);
}
if (ecrire(donnees)) {
Serial.println("OK - mise à jour");
} else {
Serial.println("Erreur - mise à jour");
}
} else {
Serial.println("Je n'ai pas trouv les données. Tentative écriture");
// la mémoire n'existe pas, on la crée
donnees.compteur = 1;
strlcpy(donnees.message, "Coucou", sizeof donnees.message);
if (ecrire(donnees)) {
Serial.println("OK - Première écriture");
} else {
Serial.println("Erreur - Première écriture");
}
}
Serial.println("on recommence dans 3 secondes...");
delay(3000);
}