Ciao a tutti,
sto provando ad usare un RTC DS1307 ed in particolare mi servirebbe calcolare i secondi totali dell'ora attuale per poi potergli sommare un'altra porzione di tempo (es. 2 ore).
Vabbè intanto posto il codice poi cerco di spiegarmi meglio..
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;
int ore, minu, seco, gg, mm, aa;
long timenow, timestart, timestop;
void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
lcd.MiWriteXY("Imposto l'RTC", 0, 0, 1);
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
DateTime now = RTC.now();
ore = (now.hour());
minu = (now.minute());
seco = (now.second());
gg = (now.day());
mm = (now.month());
aa = (now.year());
timenow = ore * 3600 + minu * 60 + seco;
Serial.println(timenow);
timestart = timenow;
timestop = timestart + (2 * 3600);
Serial.println(timestart);
Serial.println(timestop);
Serial.println(timenow);
delay(500);
}
Mettiamo il caso che ora siano le 10:15:25
con timenow = ore * 3600 + minu * 60 + seco; io vorrei che mi restituisse 10*3600 + 15*60 + 25 e quindi che timenow diventi 36925 cioè i secondi equivalenti all'ora corrente per poi potergli sommare altri secondi corrispondenti (timestop = timestart + (2 * 3600)

in questo caso a 2 ore.
Il programma funziona ma i valori di timenow non sono mai corretti, sono sempre inferiori a quello che dovrebbero essere. credo che il problema possa dipendere dal tipo di valori che restituisce l'RTC o al tipo di variabili dichiarate ma non so come risolvere..
Grazie a tutti