AntiGuide: ArduinoEeprom



PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 216.73.216.118 :: Signaler un abus :: le: 20250718 20:12:13

ArduiNo
pour des besoins limités, intutile d'utiliser une mémoire externe ( At24Cxx , y compris dans plaquette Ds3231 ou TinyRtcV1)

présentation: https://www.arduino.cc/en/Reference/EEPROM

GAFFE: la fonction EEPROM. length(); ne fonctionne pas en Ide 1.0, Ok en 1.6.7

suggestion de présentation:
au démarrage, liste le contenu de la mémoire, puis boucle

testé sur:

à noter

demo:
/*
 * EEPROM Read
 * Read and print seconds count from Eeprom
 * to the computer.
 * This example code is in the public domain.
 */

#include <EEPROM.h>

int big ;
int dim;
int val;
int last;
void setup() {
  // initialize serial and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  dim=EEPROM.length();
  Serial.println("Read/Write EEProm");
 // chercher drapeau
 bool t=false;
 int i;
 for (i=0;(i<dim) && !t;i=i+1){
  val=EEPROM.read(i);
  if (val==255) {

   t=true;
  } else {
      last=i;
      big=val;
  }
  }
  if (i==dim){
   Serial.println("pas de drapeau, mis 0");
   i=0;
  } 
  Serial.print(last);
  Serial.println(": lanterne rouge");

   
 for (int i=0;i<dim;i=i+1){
    Serial.print("\n");
    int j=(last+i) & (dim-1);
    Serial.print(j);
    Serial.print(": ");
    Serial.print (EEPROM.read(j ));
 }

}

void loop() {
  // read a byte from the current address of the EEPROM
  // value = EEPROM.read(address);
  big=big+1; 
  if (big >= dim ) big=0;
  Serial.print("last etait: ");
  Serial.println(last);
  Serial.print(" dim-1 etait: ");
  Serial.println(dim-1);
  last=(last+1) & (dim-1);
  EEPROM.write(last,big);
  EEPROM.write((last+1) & (dim-1),255);
 // Serial.print(address);
  Serial.print("\nCount: ");
  Serial.print(big, DEC);
  Serial.print(" range a: ");
  Serial.print(last, DEC);
  Serial.println();

 
  delay(5000);
}