Ciao ragazzi, vi spiego il problema! Voglio recuperare l'orario da un modulo gsm è inserirlo come valore di partenza di un rtc software.
il problema è che non riesco a compilare il codice, ve lo mostro...
int ora = 00;
void setup() {
mySerial.begin(19200); //velocità seriale del modulo GSM
Serial.begin(9600); //velocità seriale del programma
recuperaora();
//orologio software
rtc.stopRTC(); //stop the RTC
rtc.setTime([b]ora[/b],0,0); //set the time here
rtc.setDate(25,25,12); //set the date here
rtc.startRTC(); //start the RTC
}
void loop() { }
void recuperaora() {
mySerial.println("AT+CCLK?");
for (int timer3 = 0; timer3 <= 5; timer3++) { //per mostrare il ciclo di risposte del modulo attivare il ciclo for
String inData3 = mySerial.readStringUntil('\n'); //leggo le risposte
Serial.println("Risposta da modulo GSM: " + inData3); //mostra la chat tra arduino e il modulo gsm
//scompongo la stringa per farla diventare un valore intero
String data = (inData3.substring(8, 16));
String ora = (inData3.substring(17, 25));
data.trim();
ora.trim();
Serial.println(data);Serial.println(ora);
int ora=atoi(ora.c_str());
}
}
Che errori ti da? Mettili tutti
E poi già il fatto che ci siano in giro degli [ b ] e [ /b ] non depone a tuo favore. Toglili.
Presentati poi sul forum apposito (se non lo hai già fatto) e prenditi un bel libro di C.
Se non ci dici almeno l'errore sarà difficile che noi si possa aiutare
ma da una scorsa al codice a naso direi che almeno un problema lo hai qui
Serial.println("Risposta da modulo GSM: " + inData3); //mostra la chat tra arduino e il modulo gsm
e poi non mi è chiaro perchè ripetere 5 volte la stesssa sequenza, identica, con le stesse variabili
posta l'errore, che è meglio
e poi, segui un paio di regole semplici:
una riga uno statement, per quanto sia vero che puoi scrivere ancora roba dopo il punto e virgola non è per nulla comodo da capire
metti le giuste indentazioni, e le parentesi graffe come si deve
(non importa quale convenzione segui, ma UNA la devi seguire)
la formattazione automatica serve a questo
Se scrivi ordinato seguendo poche semplici regole e tieni ben formattato ed allineato il testo è tutto più semplice
NON è un consiglio, è una esplicita richiesta, in BASIC:
SE tu lo fai
ALLORA io sono disposto ad aiutarti
ALTRIMENTI no
FINEDELSE
CCLK will return the current local time in “yy/mm/dd,hh:mm:ss+/-zz” format
Dove fai questo, aggiungi la stampa di ora.c_str() su Serial, che cosa stampa ?
Serial.println(data); Serial.println(ora);
Serial.println(ora.c_str()); // stampa di ora.c_str()
int ora=atoi(ora.c_str());