consigli sketch centralina irrigazione

La gestione dell'avvio ed arresto di operazioni in base ad un orario non è semplice come sembra.

Una prima soluzione è quella di usare una variabile di stato (per evitare di compiere il controllo più di una volta) e fare un doppio check su ore e minuti.
Un'altra alternativa è quella di fare il controllo usando i timestamp. Se usi o hai usato Linux sai di cosa parlo. Altrimenti detto stringatamente il timestamp come il numero di secondi a partire da un istante prefissato.

In questo modo tutti gli orari diventano semplici variabili unsigned long che contengono il tempo espresso in secondi. Fissi l'inizio ad una data epoca, mettiamo il 1° gennaio 2013 per comodità, dopodiché conti i secondi da lì. Fare un allarme con inizio/fine è facile perché non devi fare altro che calcolarti il timestamp dell'orario di inizio e poi sommare la durata dell'evento e controllare poi questo dato.

Per calcolare il timestamp esistono diverse funzioni. Se guardi la mia libreria swRTC nel suo codice ci sono le funzioni per estrarre il timestamp da una certa data oppure per calcolarlo.