Essai d'une EEPROM, en fait c'est une partie de la mémoire flash, qui sert de mémoire.
Voici le programme :
#include "fct_str.h"
#include <EEPROM.h>
char buffer[100];
char valeur0;
char valeur1;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
EEPROM.begin(512);
}
void setup1() {
}
void loop() {
if (Serial.available() > 0) {
int rlen = Serial.readBytesUntil('\n', buffer, 99);
if(strcmp_auto_detection ( buffer, "e")==0){//efface
Serial.println("EFFACE");
for (int i = 0; i < 512; i++) {
EEPROM.write(i, 0);
}
EEPROM.commit();
}
if(strcmp_auto_detection ( buffer, "w0")==0){//ecrit
Serial.println("ECRIT 11 22");
EEPROM.write(0, 11);
EEPROM.write(1, 22);
EEPROM.commit();
}
if(strcmp_auto_detection ( buffer, "w1")==0){//ecrit
Serial.println("ECRIT 33 44");
EEPROM.write(0, 33);
EEPROM.write(1, 44);
EEPROM.commit();
}
if(strcmp_auto_detection ( buffer, "r")==0){//lit
Serial.println("LIT");
valeur0 = EEPROM.read(0);
valeur1 = EEPROM.read(1);
sprintf(buffer, "%d;%d", valeur0,valeur1);
Serial.println(buffer);
}
}
}
void loop1() {
delay(100);
digitalWrite(LED_BUILTIN, HIGH);
delay(100);
digitalWrite(LED_BUILTIN, LOW);
}
Du coup, 4 commandes :
-"e" pour effacer la zone.
-"w0" pour écrire 11 et 22.
-"w1" pour écrire 33 et 44.
-"e" pour effacer la zone.
-"w0" pour écrire 11 et 22.
-"w1" pour écrire 33 et 44.
-"r" pour lire.
J'ai fait le test, cela me semble normal, j'ai une sauvegarde même si on coupe le courant.
Aucun commentaire:
Enregistrer un commentaire