Bonjour j'ai repris le sketch d'exemple trouvé dans la librairie rtc.lib et je voudrais écrire et lire une valeur nommée pluieJour dans la ram de ce ds1307, cette valeur correspond à une hauteur de pluie tombée en un jour (ex 0,27mm) et est déclarée en float.
Je n'arrive pas avec le code modifié voir ci après à retrouver ma valeur, pouvez vous m'aider ?
je précise que je suis débutant et que mon matériel est wemos d1 mini à base d'esp8266.
// Example of using the non-volatile RAM storage on the DS1307.
// You can write up to 56 bytes from address 0 to 55.
// Data will be persisted as long as the DS1307 has battery power.
#include "RTClib.h"
RTC_DS1307 rtc;
float pluieJour = 0.27;
void setup () {
Serial.begin(115200);
delay(2000);
#ifndef ESP8266
while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
// Write some bytes to non-volatile RAM storage.
// NOTE: You can only read and write from addresses 0 to 55 (i.e. 56 byte values).
Serial.println("Writing NVRAM values.");
// Example writing one byte at a time:
rtc.writenvram(0, pluieJour);
rtc.writenvram(1, 0xED);
// Read bytes from non-volatile RAM storage.
Serial.println("Reading NVRAM values:");
// Example reading one byte at a time.
Serial.println(rtc.readnvram(0), pluieJour);
Serial.println(rtc.readnvram(1), HEX);
}
void loop () {
// Do nothing in the loop.
}
Merci d'avance pour votre aide, bien cordialement
Philippe
Un float fait 4 octets. Je ne connais pas cette bibliothèque et je ne sais pas si les instructions :
rtc.writenvram(0, pluieJour);
Il enregistre ces 4 octets ou les tronque en un seul octet stocké en position 0x00 de la mémoire.
Si cette instruction fait correctement les choses, vous avez les 4 premiers octets de mémoire occupés, puis l'instruction suivante :
rtc.writenvram(1, 0xED);
Le script précédent vous corrompt, cette instruction devrait être :
rtc.writenvram(4, 0xED);
Il faut également en tenir compte lors de la lecture de la mémoire.
@hbachetti j'ai essayé de mettre cette valeur pluieJour dans l'eeprom de mon wemos mais il semble que cela buggue car j'ai cette valeur remise à zéro parfois sans raison.
comme je voulais intégrer un ds1307 pour avoir date, heure etc même sans internet, je profite de tester cette nvram pour stocker cette valeur pluieJour et voir si j'aurai le même buggue avec remise à zéro intempestive !
Votre solution fonctionne pour moi, juste une remarque concernant les 2 lignes citées plus haut, sont elles nécessaires ?
En tout cas merci pour votre temps passé à me lire et répondre.