#7 Funzione millis()

Arduino ha due comandi per mettere in pausa lo sketch, una è il delay(), che crea una pausa per i millisecondi indicati all’interno delle parentesi quindi un delay(1000); indicherà una pausa di 1 secondo, l’altro è millis();

La differenza fra i due comandi è che mentre delay() mette in pausa lo sketch per il tempo indicato senza la possibilità che Arduino possa fare altro durante quel tempo, quindi prendendo come esempio il classico lampeggio del led, una volta che Arduino arriva al delay(), si blocca per quel tempo e non farà altro, con millis(); Arduino calcola il tempo senza mettersi in pausa, quindi potrà continuare a svolgere altri comandi.

Per capire meglio colleghiamo un led ad Arduino con la classica resistenza:

Funzione millis con Arduino

Come vedete il codice è più lungo del blink con delay(), inoltre servono delle variabili per calcolare il tempo, andiamo ad analizzare lo sketch

iniziamo a dichiarare le variabili:
statoled che dichiaro LOW quindi il led sarà spento.
ultimo_evento dove Arduino memorizza se il led è LOW o HIGH e la usa per la parte successiva.
tempoON il tempo che il led deve restare acceso 1000 ms.
tempoOFF il tempo che il led deve restare spento 1000 ms
Il tempo di ON e OFF in realtà in questa parte è un semplice numero intero non un tempo, ma successivamente Arduino usandolo in un calcolo in cui l’altro elemento è il tempo lo leggera come se fossero ms.


Analizziamo il loop:
dopo aver dichiarato una variabile denominata currentMillis con valore millis(), quindi con un valore sempre uguale all’arco di tempo passato dall’accensione di Arduino, sviluppo la parte del if dando la condizione di avere il led spento.
Se il led è spento Arduino, egge il secondo if, controlla se la condizione è vera o meno, nella condizione troviamo la variabile ultimo_evento che varia ad ogni if memorizzando il tempo a quell’istante, quindi Arduino tramite l’if controlla se il tempo attuale – il tempo dell’ultimo stato è maggiore del tempo ON o OFF e svolge il comando accende o spegne il led e memorizza la condizione del led oltre ad aggiornare la variabile currentMillis.

5,0 / 5
Grazie per aver votato!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *