Spiegazioni per millis()

ok le graffe le ho messe solo per la spiegazione , mi hai capito lo stesso.

poi, voi mi dite che millis non interrompe il programma e per cui si possono impostare x istanze di millis che sono indipendenti.

#define led1 13
#define led2 12
#define led3 11

unsigned long tempoTrascorso;     // variabile usata per contare i millisecondi trascorsi dall'avvio di Arduino
unsigned long tempoled1 = 0;        // variabile usata per stabilire quando dovrà accendersi il primo led
unsigned long tempoled2 = 0;       // variabile usata per stabilire quando dovrà accendersi il secondo led
unsigned long tempoled3 = 0;      // variabile usata per stabilire quando dovrà accendersi il terzo led

void setup() {

pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
}

void loop() {

tempoTrascorso = millis();                   // memorizzo millis() nella variabile tempoTrascorso

if(tempoTrascorso >= 10000)                 // Dopo 10 secondi la variabile tempoTrascorso viene azzerata
{
tempoTrascorso = 0;
tempoTrascorso = millis();
}

// Il primo led viene acceso dopo 1 secondo dall'avvio di arduino e spento dopo mezzo secondo

if(tempoTrascorso > tempoled1 + 1000)
{
digitalWrite(led1,HIGH);
tempoled1 = millis();
}

if(tempoTrascorso > tempoled1 + 500)
{
digitalWrite(led1,LOW);

}

// Il secondo led viene acceso dopo 2 secondi  dall'avvio di arduino e spento dopo 1 secondo

if(tempoTrascorso > tempoled2 + 2000)
{
digitalWrite(led2,HIGH);
tempoled2 = millis();
}

if(tempoTrascorso > tempoled2 + 1000)
{
digitalWrite(led2,LOW);

}

// Il terzo led viene acceso dopo mezzo secondo  dall'avvio di arduino spento dopo un quarto di secondo

if(tempoTrascorso > tempoled3 + 500)
{
digitalWrite(led3,HIGH);
tempoled3 = millis();

}
if(tempoTrascorso > tempoled3 + 250)
{
digitalWrite(led3,LOW);

}

}

ho trovato questo listato che è perfetto per quello che vi devo chiedere.

se uno lo prova vede che i tre led si accendono in modo autonomo secondo il tempo impostato.

Ma, se appena appena provi a cambiare un tempo e impostarlo su una temporizzazione piu lunga, nel termine di qualche secondo, sballa tutto, anche i tempi degli altri led......come mai?

grazie