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