Sensori umidità/temp: 1) Lettura Real Time Clock. 2) Data dei file creati su SD

Salve a tutti.

Sto usando:
– Arduino Uno
– Adafruit Data Logger shield rev B
– Due sensori Grove Temperature&Humidity Sensor Pro DHT 22
– Seeed Solar Charger Shield V2.2 con batteria e pannelli fv

Tutto questo per monitorare temperatura e umidità in una serra.
Ho modificato lo sketch fornito da Adafruit per temporizzare la lettura dei sensori usando l’RTC incorporato nel logger. Funziona tutto ma ho un paio di domande a cui non ho trovato risposta.

  1. Non voglio usare il delay ma una lettura ogni ora intera e ogni mezz’ora.
    Ho scritto un un ciclo if che funziona. E’ possibile sostituire alle cifre dell’ora e dei minuti due caratteri che significano qualunque numero per soddisfare tutte le occorrenze nelle 24 ore?
void loop(void)
{
// ottiene l’ora dal rtc
	DateTime now = RTC.now();

// ciclo if per scrivere su SD

	if(now.hour() == 12 && now.minute() == 0 && now.second() == 0
	|| now.hour() == 12 && now.minute() == 30 && now.second() == 0
	|| eccetera)
{
// istruzioni di lettura sensori e scrittura su SD
}
}
  1. Tutti i file che crea lo sketch per scrivere i dati dei sensori sulla scheda SD hanno sempre la stessa data e ora: 01/01/2000, 00:00:00
    E’ possibile usare data e ora corrente del RTC?
// create a new file

   char filename[] = "LOGGER00.CSV";
   for (uint8_t i = 0; i < 100; i++) {
     filename[6] = i/10 + '0';
     filename[7] = i%10 + '0';
     if (! SD.exists(filename)) {
       // only open a new file if it doesn't exist
       logfile = SD.open(filename, FILE_WRITE); 
       break;  // leave the loop!
     }
   }

Grazie a tutti.

Non di sicuro con la libreria standard SD, non ricordo se la cosa era possibile con altra libreria. Se fai un po' di ricerche, qui nella sezione Italiana del forum, ricordo che l'argomento è già stato trattato in passato.

Guglielmo

Guarda la libreria SdFat, tra gli esempi ce ne è UNO che credo faccia prioprio quello che chiedi ... ::slight_smile:

Guglielmo

A parte l'ammirevole pazienza nello scrivere l'if [ offtopic ]ma come fate a mettervi ore a scrivere cose? Io oltre i 30 min mi fondo il cervello) [/ offtopic ] io ho notato una cosa: tu devi agire solo se i secondi sono pari a 0 e i minuti multipli di 30. Quanto a scrivere "i secondi sono pari a 0" ci sei. Mentre "i minuti sono multipli di 30" significa "il resto della divisioni tra minuti e 30 fa 0". Sappi che l'operatore "resto di divisione" é %. Al resto ci arrivi (consiglio, ignora le ore)