Bonjour,
Je viens de recevoir mes EEPROM et commence à en tester le fonctionnement.
J'utilise la "bibliothèque" EepromUtil pour réaliser une opération simple : écrire puis lire un entier.
Pour cela, il y a deux instructions : eeprom_write_int() et eeprom_write_read()
Mais je n'obtiens pas le résultat escompté.
Je n'ai pas de retour d'erreur en lecture et en écriture, mais "valeurLue" reste à 999.
int valeurEcrite=10000;
int valeurLue=999;
boolean OK=false;
OK = eeprom_write_int(1, valeurEcrite);
if (OK)
{
Serial.println("Ecriture OK");
}else{
Serial.println("Ecriture pas OK");
}
OK = eeprom_read_int(1, valeurLue);
if (OK)
{
Serial.println("Lecture OK");
}else{
Serial.println("Lecture pas OK");
}
Serial.println("Valeur lue => ");
Serial.println(valeurLue);
Qui me mettra le pied à l'étrier ?
Merci beaucoup.
Ci-dessous, le code de la bibliothèque pour les deux fonctions :
boolean eeprom_write_bytes(int startAddr, const byte* array, int numBytes) {
// counter
int i;
// both first byte and last byte addresses must fall within
// the allowed range
if (!eeprom_is_addr_ok(startAddr) || !eeprom_is_addr_ok(startAddr + numBytes)) {
return false;
}
for (i = 0; i < numBytes; i++) {
EEPROM.write(startAddr + i, array[i]);
}
return true;
}
boolean eeprom_read_bytes(int startAddr, byte array[], int numBytes) {
int i;
// both first byte and last byte addresses must fall within
// the allowed range
if (!eeprom_is_addr_ok(startAddr) || !eeprom_is_addr_ok(startAddr + numBytes)) {
return false;
}
for (i = 0; i < numBytes; i++) {
array[i] = EEPROM.read(startAddr + i);
}
return true;
}
boolean eeprom_write_int(int addr, int value) {
byte *ptr;
ptr = (byte*)&value;
return eeprom_write_bytes(addr, ptr, sizeof(value));
}
boolean eeprom_read_int(int addr, int* value) {
return eeprom_read_bytes(addr, (byte*)value, sizeof(int));
}