PWM di un LED con tasto di spegnimento temporizzato

Claudio i tuoi consigli sono stati davvero preziosi e per questo ti ringrazio

Alla fine ho scelto la strada piu semplice aggiungendo una altra variabile di stato per controllare il restart del FADE al termine della pausa come da tuo suggerimento

  void loop() {
    unsigned long progress = millis() - fadeStartTime;
    dt = millis() - t1;
    tastoValue = digitalRead (tasto);
    tastoStato = 0;
  
  
    if ((tastoValue == HIGH)  && (tastoStato == 0)) { 
      tastoLight = 1;
     
    }
  
    if (tastoValue == LOW)  {
  
      tastoLight = 0;
      digitalWrite (led, 0);
      t1 = millis();
      tastoStato = 1;
  
    }
  
    if (dt <= waiting) {
           
      tastoStato = 0;
      fadeStartTime = millis(); // restart fade again
      
    }
  
    if ((progress <= FADE_PEDIOD) && (tastoLight == 1)) {
      long brightness = map(progress, 0, FADE_PEDIOD, 0, 255);
      analogWrite(led, brightness);


anche se non ho capito come mai ho dovuto nel terzo "if" mettere (dt <= waiting) io nel mio ragionamento lo intendevo >=

Ad ogni modo pare che funziona

Inoltre tutta la tue chiare indicazioni in merito al metodo di sicuro mi saranno utili per il futuro

Per il momento grazie ancora

Cristiano