Una delle funzioni più usate e dalle molte potenzialità è la funzione millis(): essa ci ritorna il tempo trascorso dall’accensione del nosto Arduino.  La funzione ci ritorna un int e l’unità di misura sono i millisecondi  (come per il delay: 1000 millisecondi equivalgono ad un secondo).  L’uso è molto semplice:

void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print("millisecondi ");
  time = millis();
  Serial.println(time);
  delay(1000);
}

Niente di troppo complicato.
Possiamo usare la millis per gestire le temporizzazioni fissando una o due variabili,  fissiamo in una di esse il valore della millis,  e poi confrontiamo questo valore con una successiva chiamata alla millis.
Facciamo un’esempio di led lampeggiante modificando il codice presente qui:

boolean state = true;
int time;  //Variabile per memorizzare il tempo
void setup()
{
pinMode(13, OUTPUT);     //impostiamo il pin 13 come Output
time = millis();       //prendo il tempo iniziale
}
void loop()
{
digitalWrite(13, state);
if((time+500)<millis())//Se sono trascorsi 500 millisecondi
{                   //
state = !state;   //Cambia lo stato del led
time = millis(); // azzera il conteggio del tempo
}

}

Il codice è già commentato:  prendiamo il tempo all’inizio nel void setup (altrimenti ad ogni “giro” del void loop azzeriamo la variabile),  poi controlliamo il tempo finchè non trascorrono 500 millisecondi da quando abbiamo memorizzato il valore nella variabile time.
Note: Quando si usa una variabile di tipo unsigned long int il conteggio del tempo va in overflow (ovvero ricomincia da zero) in circa 50 giorni, nel caso dell’esempio, avendo usato un semplice int andrà in overflow molto prima.

Note:  Esistono altre due funzioni relative alla gestione del tempo nell’arduino. Una è micros() che ha la stessa funzione di millis() solo che l’uscita è in microsecondi (ha una risoluzione di 4 microsecondi), la seconda è la delayMicroseconds() che come suggerisce il nome ritarda di un tot microsecondi l’esecuzione del programma.