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