Ho preso un esempio fatto da Guglielmo e l'ho leggermente modificato per il mio programma, ho l'esigenza di "splittare" la data rilevata dalla funzione rtc.getDateStr()
per poi convertirla in UnixTime, la finalità è poi di fare delle operazioni seguenti per un allarme sveglia.
Riscontro due problemi, il primo è che sostituendo alla data la funzione getDateStr mi restituisce l'errore in oggetto al post, Il secondo problema è che il controllo dovrei esguirlo in loop, in quanto il confronto deve essere con un tempo impostato e il tempo rilevato in "real time".
Quindi ho provato a spostare in blocco su "void loop()" ma il funzionamento non è più corretto!
Ecco il codice.
#include <string.h>
#include <DS3231.h>
// Init the DS3231 using the hardware interface
DS3231 rtc(SDA, SCL);
char elemento[3][5];
byte i;
char* elementoSeparatore = ".";
char* pElemento = NULL;
char* pProssimoElemento = NULL;
int var1;
int var2;
int var3;
Time t;
String a;
void setup() {
rtc.begin();
// solo per precauzione per eventuali problemi con il bootloader inserisco un delay iniziale
delay(1000);
//
a=rtc.getDateStr();
char stringaDaDividere[] = a;//se metto una data esempio 12.06.2019 al posto di "a" funziona correttamente
Serial.begin(115200);
Serial.print(F("Stringa da suddividere: "));
Serial.println(stringaDaDividere);
Serial.print(F("Carattere separatore: "));
Serial.println(elementoSeparatore);
Serial.println();
//
// recupera il primo elemento di stringaDaDividere ...
pElemento = strtok_r(stringaDaDividere, elementoSeparatore, &pProssimoElemento);
strcpy(elemento[0], pElemento);
//
// ... e poi recupera i successivi (nota il NULL al posto di stringaDaDividere).
for (i=1; i<3; i++) {
pElemento = strtok_r(NULL, elementoSeparatore, &pProssimoElemento);
strcpy(elemento[i], pElemento);
}
//
// divide gli elementi della data
Serial.println(F("Elementi separati ..."));
for (i=0; i<3; i++) {
Serial.print(F("var"));
Serial.print((i+1), DEC);
Serial.print(F("="));
Serial.println(elemento[i]);
t.year= var3;
t.mon= var2;
t.date=var1;
Serial.println(rtc.getUnixTime(t));
}
}
void loop() {
}
Grazie in anticipo Maurizio Filomeni