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(); }