// Pin-Definitionen
const int buttonPin = 2; // Pin für den Taster
const int ledPin = 13; // Pin für die LED
// Variablen für den Zustand
int buttonState = HIGH; // Aktueller Zustand des Tasters (HIGH wegen Pullup)
int lastButtonState = HIGH; // Vorheriger Zustand des Tasters
int ledState = LOW; // Zustand der LED (ein/aus)
// Variablen für Entprellen
unsigned long lastDebounceTime = 0; // Zeitstempel der letzten Änderung
unsigned long debounceDelay = 50; // Entprellzeit in Millisekunden
void setup() {
// Pin-Modi festlegen
pinMode(buttonPin, INPUT_PULLUP); // Taster-Pin als Eingang mit internem Pullup
pinMode(ledPin, OUTPUT); // LED-Pin als Ausgang
// Initialen Zustand der LED setzen
digitalWrite(ledPin, ledState);
}
void loop() {
// Zustand des Tasters lesen
int reading = digitalRead(buttonPin);
// Prüfen, ob der Tasterzustand sich geändert hat
if (reading != lastButtonState) {
lastDebounceTime = millis(); // Zeitstempel aktualisieren
}
// Wenn der Zustand stabil bleibt (Entprellzeit überschritten)
if ((millis() - lastDebounceTime) > debounceDelay) {
// Wenn sich der Tasterzustand tatsächlich geändert hat
if (reading != buttonState) {
buttonState = reading;
// Wenn der Taster gedrückt wurde (von HIGH auf LOW)
if (buttonState == LOW) {
ledState = !ledState; // LED-Zustand umschalten
}
}
}
// LED basierend auf dem LED-Zustand steuern
digitalWrite(ledPin, ledState);
// Speichern des aktuellen Tasterzustands
lastButtonState = reading;
}