constexpr byte TADSCHALTER {A1};
enum class Status : byte { idle, wait8, wait25, waitDone };
void warte() {
static unsigned long timeStamp {0};
static Status status {Status::idle};
if (digitalRead(TADSCHALTER) == LOW) {
delay(20); // Entprellen für Arme
switch (status) {
case Status::idle:
timeStamp = millis();
Serial.println("Warten gestartet");
status = Status::wait8;
break;
case Status::wait8:
if (millis() - timeStamp > 8000) {
Serial.println("8 Sekunden gewartet");
status = Status::wait25;
}
break;
case Status::wait25:
if (millis() - timeStamp > 25000) {
Serial.println("25 Sekunden gewartet");
status = Status::waitDone;
}
break;
case Status::waitDone: break;
}
} else {
if(status != Status::idle) { Serial.println("Warten abgebrochen"); }
status = Status::idle;
}
}
void setup() {
Serial.begin(115200);
Serial.println("Start");
pinMode(TADSCHALTER, INPUT_PULLUP);
}
void loop() { warte(); }