#include <EEPROM.h> // Bibliothèque d'utilisation de l'EEPROM
char ssidInit[32] = "Bonjour" ;
char ssid[32] ;
char readSSID[32] ;
char writeSSID[32] = "Couccou" ;
int x ;
int y ;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println();
Serial.println("Hello, ESP32 !");
Serial.println();
// Initialisation de l'EEPROM
EEPROM.begin(512); //Initialisation de l'EEPROM (512 octets)
delay(10); // Attente de 10ms
readEEPROM(readSSID, 0, 31) ;
emptyEEPROM(ssidInit, readSSID, 0, 31) ;
for(uint8_t i = 0; i < 32; i ++) writeSSID[i] = 0 ;
writeSSID[0] = 'C' ;
writeSSID[1] = 'o' ;
writeSSID[2] = 'u' ;
writeSSID[3] = 'c' ;
writeSSID[4] = 'o' ;
writeSSID[5] = 'u' ;
writeEEPROM(writeSSID, 0, 31) ;
readEEPROM(ssid, 0, 31) ;
Serial.println();
delay(5000) ;
ESP.restart() ;
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}
/*******************************************************************************************\
|* Fonction de lecture en EEPROM *|
|* readChar : Tableau de caractères à sauvegarder dans l'EEPROM *|
|* startAddress : Adresse de départ de la lecture dans l'EEPROM *|
|* endAddress : Adresse de fin de la lecture dans l'EEPROM *|
\*******************************************************************************************/
void readEEPROM(char* readChar, int startAddress, int endAddress) // Fonction de lecture en EEPROM
{
for (uint8_t i = startAddress; i <= endAddress; i ++) readChar[i] = EEPROM.read(i) ; // Lecture en EEPROM
Serial.print("Lecture en EEPROM de : "); // Message sur le moniteur série
Serial.print((char)34) ;
Serial.print(readChar) ; // Affichage, sur le moniteur série, des caractères lus sur l'EEPROM
Serial.println((char)34) ;
}
/*******************************************************************************************\
|* Fonction d'écriture en EEPROM *|
|* writeChar : Tableau de caractères à sauvegarder dans l'EEPROM *|
|* startAddress : Adresse de départ de sauvegarde dans l'EEPROM *|
|* endAddress : Adresse de fin de sauvegarde dans l'EEPROM *|
\*******************************************************************************************/
void writeEEPROM(char* writeChar, int startAddress, int endAddress) // Fonction d'écriture en EEPROM
{
for (uint8_t i = startAddress; i <= endAddress; i ++) EEPROM.write(i, 0) ; // Effacement des octets de l'EEPROM
for (uint8_t i = startAddress; i < (startAddress + String(writeChar).length()); i ++) EEPROM.write(i, writeChar[i]) ; // Écriture en EEPROM
EEPROM.commit(); // Enregistrement dans l'EEPROM
Serial.print("Ecriture en EEPROM de : "); // Message sur le moniteur série
Serial.print((char)34) ;
Serial.print(writeChar) ; // Affichage, sur le moniteur série, des caractères enregistrés sur l'EEPROM
Serial.println((char)34) ;
}
/*******************************************************************************************\
|* Fonction d'EEPROM vide *|
|* initChar : Tableau initial de caractères *|
|* destChar : Tableau de destination des caractères *|
|* startAddress : Adresse de départ de la lecture dans l'EEPROM *|
|* endAddress : Adresse de fin de la lecture dans l'EEPROM *|
\*******************************************************************************************/
void emptyEEPROM(char* initChar, char* destChar, int startAddress, int endAddress) // Fonction d'EEPROM vide
{
if (destChar[startAddress] == 255) // EEPROM vide ?
{
Serial.println("EEPROM vide") ; // Message sur le moniteur série
for(uint8_t i = startAddress; i <= endAddress; i ++) destChar[i] = 0 ; // Initialisation à zéro de tous les caractères
writeEEPROM(initChar, startAddress, endAddress) ; // Écriture des caractères initiaux
readEEPROM(destChar, startAddress, endAddress) ; // Lectures des caractères contenu dan l'EEPROM
}
}