Millis: scusate ma non capisco

miky_police:
PS: ho risposto da smartphone, mi scuso per errori grossolani :wink:

Ehmm, si, il confronto con millis()... è millis()-accensione

usul5761:
ok ho letto l'orologio.....ma non

Ho messo un'altra sintesi qui.

Per il resto (trascurando l'errore dell'overflow dopo 1192 ore) si tratta solo di due parti di programma concorrenti. Come dice Standardoil è un compito affrontabile più facilmente usando una logica a "situazioni" (una variabile "situazione" va usata assieme alle altre if per "abilitare" di volta in volta solo quelle corrispondenti alla situazione attuale).

Ad esempio, per usare le tue stesse variabili (ma si potrebbe semplificare):

void loop() 
{
  time = millis();
  if (situazione == 0  &&  time - accensione >= 4000) 
  {
    digitalWrite(led, HIGH);
    Serial.println(time);
    spegnimento = millis();
    situazione = 1;
  }
  else if(situazione == 1  &&  time - spegnimento >= 1000) 
  {
    digitalWrite(led, LOW);
    Serial.println (time);
    accensione = millis();
    situazione = 0;
  }
}