Funzione millis()

Per far lampeggiare un led, al posto di usare la funzione delay() possiamo utilizzare anche la funzione millis(). Questa funzione restituisce il numero di millisecondi da quando la scheda Arduino ha iniziato l’esecuzione del programma. Dopo 50 giorni che la scheda non viene spenta questo numero ritorna a 0. Per usare questa funzione si può ad esempio scrivere int tempo = millis(); dove in pratica la funzione restituisce un numero in millisecondi e lo immagazina all’interno della variabile tempo.

Vediamo ora come possiamo far lampeggiare il led usando questa funzione.

Lo schema elettrico per collegare il led è lo stesso usato nel primo tutorial Hello World mentre il codice da scrivere nell’IDE cambia.

Codice:

#define ledPin 13  //LED connesso al pin digitale 13
#define interval 1000  //Intervallo di tempo per  far lampeggiare il LED(millisecondi)
int value = LOW;  //Valore precedente del LED
long previousMills = 0;  //Memorizza l'ultima volta che il led è stato aggiornato

void setup()
{
     pinMode(ledPin, OUTPUT);  //Impostiamo il led come output
}

void loop()
{
     if (millis() -  previousMills > interval ){
         previousMills = millis();  //Tiene in memoria l'ultimo lampeggio

         //Se il LED è spento lo accende e viceversa
         if (value == LOW)
             value = HIGH;
         else
             value = LOW;

         digitalWrite(ledPin, value);
     }
}

Analisi del codice:

1-Struttura IF/ELSE:

if (variabile < 500)
{
  // Azione A
}
else
{
  // Azione B
}

L’IF è un controllo, tradotto in parole povere significa che controlla se una variabile è minore, maggiore o uguale ad un numero, se la condizione è verificata esegue l’azione A altrimenti esegue l’azione B.

2- if (millis() –  previousMills > interval ): Fà la differenza tra il tempo attuale e il tempo precedente in cui stato acceso il led e controlla se è necessario accendere oppure no il led dopo un tempo (interval) di un secondo.