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
- il n'y a pas de classe à instancier donc on utilise EEPROM.xxxxx
- le EEPROM.h n'as pas de comparse .cpp
- peut être vue comme un tableau avec la syntaxe: EEPROM.read/write(address)
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);
}