#define TASTER_PIN 2 // Der Pin, an dem der Taster angeschlossen ist (muss ein Interrupt-fähiger Pin sein)
#define LED_PIN 13 // Die eingebaute LED für Feedback
#define ENTRELLZEIT 1000 // Entprellzeit in Millisekunden
volatile unsigned long letzterInterruptZeitpunkt = 0; // Zeitpunkt des letzten Interrupts
void setup() {
pinMode(TASTER_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
attachInterrupt(digitalPinToInterrupt(TASTER_PIN), tasterGedrueckt, FALLING); // FALLING, da PULLUP verwendet wird
}
void loop() {
// Hier könnte anderer Code ausgeführt werden, während auf den Taster-Interrupt gewartet wird
}
// Die Interrupt Service Routine (ISR)
void tasterGedrueckt() {
// Überprüft, ob seit dem letzten Interrupt genug Zeit vergangen ist, um Prellen zu vermeiden
if (millis() - letzterInterruptZeitpunkt >= ENTRELLZEIT) {
letzterInterruptZeitpunkt = millis(); // Aktualisiert den Zeitpunkt des letzten Interrupts
digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Schaltet den Zustand der LED um
}
}