Una cosa molto strana, ho delle variabili che vengono stampate sulla seriale alternativamente, cioè un ciclo ci sono il successivo non ci sono e ricomincia !
Nel mio caso sono le variabili delle coordinate geografiche, usando il Sim908 con l'opportuna libreria (Google Code Archive - Long-term storage for Google Code Project Hosting.)
Nella libreria ci sono degli sketch di esempio e caricando quello relativo al GPS le coordinate vengono stampate correttamente ad ogni inizio ciclo. Mentre nel mio no !
All'inizio pensavo che era un problema di tempo, ovvero che ogni ciclo doveva iniziare dopo 5 secondi, per esempio.
EÈ da escludere, funziona anche senza mettere un delay.
Ecco cosa vedo nella seriale, con il mio sketch:
(quelle in verde sono le variabili lat lon e alt)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
CHECK
DHT22: OK
DS18B20: OK
Allarme: OK
Led Status: OK
SD: OK
MPL115A2: OK
GSM/GPS: OK
Segnale GPS: OK |||||||||||||||||||||||||||||| 3D FIXED
3807.960240;1443.546704;43.949493;19.56;92.20;101.66;SD: OK;
;;;19.62;92.90;101.66;SD: OK;
3807.960240;1443.546704;43.949493;19.69;93.10;101.59;SD: OK;
;;;19.69;93.00;101.66;SD: OK;
3807.960240;1443.546704;43.949493;19.69;92.90;101.53;SD: OK;
;;;19.75;92.80;101.66;SD: OK;
3807.960240;1443.546704;43.949493;19.81;92.70;101.53;SD: OK;
;;;19.87;92.60;101.66;SD: OK;
3807.960240;1443.546704;43.949493;19.81;92.60;101.78;SD: OK;
Mentre questo è ciò che vedo con lo sketch della libreria (senza delay), che funziona perfettamente:
Non ho studiato lo sketch, vedo che stampi tante cose in base a dei test con degli if. Prova facendo un pò di debug mettendo il print dei valori usati in quei test per verificare che effettivamente i dati siano quelli che ti aspetti e che si aspetta il codice.
Si esatto. Però gli if sono nel setup e funzionano tutti.
Il problema è nel loop, ovvero le variabili lat lon alt un ciclo vengono stampate il ciclo dopo no e vice versa.
Sicuramente è così. Ma perché vengono stampati alternativamente ?
Se uso lo sketch di esempio i dati li ho sempre e comunque, a prescindere dal tempo di richiesta !
Invece con il mio sketch no ! È come se non vengono memorizzati, no che non ci sono.
Mi pare di capire che tu prima scriva i dati su un file e successivamente lo riapri per leggerlo. Mi viene da pensare che nel momento in cui vai a riaprire il file i dati siano stati scritti solo sul buffer, cioè non sono ancora fisicamente presenti sulla scheda.
Prova mettendo un SD.flush() subito dopo la scrittura dei dati: questo comando dice alla libreria di svuotare il buffer e di scrivere materialmente i dati sul file.
no no, i dati vengono prima prelevati, poi spediti sulla seriale, poi spediti via radio, con un modulo rtty (costruendo la "variabile" rtty) e poi salvate sulla sd !
Quindi la sd è l'ultima cosa che viene "toccata".
Andrea lo sai che è inutile fare gli UP qui.
Se qualcuno conoscesse la soluzione o avesse avuto anche solo qualche idea di come risolvere il tuo problema, secondo me, ti avrebbero già risposto.
Se non ti rispondono e perché, come me, anche gli altri non hanno la minima idea del problema e delle relative soluzioni. Quindi si torna alla prima riga.