Salve a tutti.
Nel mio attuale progettino devo integrare un RTC per tenere dei log con la data aggiornata, premetto che tutto il mio progetto funziona ma mi sono inbattutto in una condizione di cui non ho chiaro il motivo e io fin dove posso voglio capire....
Vi pongo di seguito due sketch il primo è l'esempio della libreria per leggere l'RTC in uso, l'altro sketch è pressoche identico solo che il BUFFER per leggere l'ora l'ho definito a livello globale e non più locale al LOOP.
Nel primo sketch il monitor seriale restituisce un orario che si aggiorna e si vedono i secondi che vanno avanti.
Nel secondo sketch il monitor seriale restituisce un orario fisso.
Penso già che sia una questione di puntatori, ma perchè?
Ovviamente ringrazio tutti anticipatamente.
-Primo Sktech
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
void setup() {
Serial.begin(57600);
#ifndef ESP8266
while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
} // end rtc.begin()
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
char ora[] = "hh:mm:ss"; //Buffer definito a livello locale
Serial.println(now.toString(ora));
delay(10);
}
-Secondo Sketch
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
char ora[] = "hh:mm:ss"; //Buffer definito a livello globale
void setup() {
Serial.begin(57600);
#ifndef ESP8266
while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
} // end rtc.begin()
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
Serial.println(now.toString(ora));
delay(10);
}