Für das Debouncen und das Erkennen von Tastenänderungen nehme ich gerne eine Library,
da ist es nicht so einfach sich in den Fuß zu schießen.
delay gehört nicht in ein Programm das Zeitabläufe mit millis steuert.
Kompiliert aber nicht getested
#include <Bounce2.h>
const byte button = 3;
const byte ledPin = 6;
const unsigned long interval = 5000;
byte ledState = LOW;
unsigned long started;
Bounce key;
void setup() {
pinMode(ledPin, OUTPUT);
key.attach(button, INPUT_PULLUP);
}
void loop() {
unsigned long topLoop = millis();
if (key.update() && key.rose()) {
ledState = HIGH;
started = topLoop;
}
if ((ledState == HIGH) && (topLoop - started >= interval)) {
ledState = LOW;
}
digitalWrite(ledPin, ledState);
}