Millis() in Switch Case Problem

Hallo,

du aktualisierst vor jeden Vergleich den Zeitmerker. Wie soll dann der Vergleich jemals wahr werden?
Nachdem der Vergleich gültig wurde zieht man den Zeitmerker nach auf die aktuelle Zeit damit er für den nächsten Vergleich erneut warten kann.

case 1://***** Abfrage HSQ1 *****
        if (digitalRead(HSQ1) == HIGH) {
          digitalWrite(Relais_HSQ1, HIGH);
            
          Startzeit1 = millis();
        }
        else if (millis() - Startzeit1 >= 2000) {
          digitalWrite(Relais_HSQ1, LOW);
        }
        break;

ändern in

case 1://***** Abfrage HSQ1 *****
        if (digitalRead(HSQ1) == HIGH) {
          digitalWrite(Relais_HSQ1, HIGH);
        }
        else if (millis() - Startzeit1 >= 2000) {
          Startzeit1 = millis();
          digitalWrite(Relais_HSQ1, LOW);
        }
        break;