allora la prima lettura scommetto che avviene dopo 1.3 secondi e la seconda dopo 5.3 secondi ![]()
arduino non è multitasking, una funzione non è un task.
ci sono 2 modi per creare un "multitask" (anche se non sarebbe corretto) su arduino:
- l'uso della funzione millis()
- l'uso di un timer che allo scadere scatena un interrupt che va a chiamare una funzione bloccando il processo in atto.
se pensi che la seconda sia più complicata io direi di no in quanto esiste il "leOS":
http://arduino.cc/forum/index.php/topic,111732.0.html
però non credo sia il tuo caso in quanto tu vai a richiamare determinate funzioni nel codice (insomma non vanno a eseguirsi ognuna per conto suo e poi leggi magari una variabile globale apposita ma proprio tu le chiami interrogando il risultato della funzione).
il primo metodo è il più usato, in pratica il comando millis() restituisce i millisecondi da quando il programma è partito.
è preciso in quanto si appoggia al timer0 del microcontrollore e quindi ha risoluzione di 16MHz, con dei controlli if su variabili unsigned long memorizzate puoi arrivare a oltre 50 anni di utilizzo senza che millis() vada in overflow ![]()