// Definiere die Pins für den Taster und die LEDs
const int buttonPin = PF0; // Pin, an dem der Taster angeschlossen ist
const int redLEDPin = PD0; // Pin für die rote LED
const int yellowLEDPin = PD1; // Pin für die gelbe LED
const int greenLEDPin = PD2; // Pin für die grüne LED
// Debounce Variablen
unsigned long lastDebounceTime = 0; // Speicherung der letzten Debounce-Zeit
unsigned long debounceDelay = 50; // Debounce Verzögerung in Millisekunden
int buttonState = LOW; // Aktueller Zustand des Tasters
int lastButtonState = LOW; // Letzter gelesener Zustand des Tasters
// Variable zur Speicherung des Zustandes des Tasters
bool isSequenceActive = false;
void setup() {
// Konfiguriere die Pin-Modi
pinMode(buttonPin, INPUT_PULLUP);
pinMode(redLEDPin, OUTPUT);
pinMode(yellowLEDPin, OUTPUT);
pinMode(greenLEDPin, OUTPUT);
// Initialisiere die LEDs auf ausgeschaltet
digitalWrite(redLEDPin, LOW);
digitalWrite(yellowLEDPin, LOW);
digitalWrite(greenLEDPin, LOW);
}
void loop() {
// Lese den Tasterzustand
int reading = digitalRead(buttonPin);
// Überprüfe, ob der Tasterzustand sich vom letzten Mal geändert hat
if (reading != lastButtonState) {
// Reset der Debounce-Timer
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// Wenn der Debounce-Timer abgelaufen ist, überprüfe den Tasterzustand
if (reading != buttonState) {
buttonState = reading;
// Überprüfe, ob der Taster gedrückt wurde
if (buttonState == HIGH && !isSequenceActive) {
isSequenceActive = true; // Setze den Sequenz-Aktiv-Zustand
// Starte die Sequenz
digitalWrite(redLEDPin, HIGH); // Rote LED an
delay(2000); // Warte 2 Sekunden
digitalWrite(yellowLEDPin, HIGH);// Gelbe LED zusätzlich an
delay(1000); // Warte 1 Sekunde
digitalWrite(redLEDPin, LOW); // Rote LED aus
digitalWrite(yellowLEDPin, LOW); // Gelbe LED aus
digitalWrite(greenLEDPin, HIGH); // Grüne LED an
delay(5000); // Warte 5 Sekunden
digitalWrite(greenLEDPin, LOW); // Grüne LED aus
digitalWrite(yellowLEDPin, HIGH);// Gelbe LED an
delay(1000); // Warte 1 Sekunde
digitalWrite(yellowLEDPin, LOW); // Gelbe LED aus
digitalWrite(redLEDPin, HIGH); // Rote LED an
delay(3000); // Warte 3 Sekunden
digitalWrite(redLEDPin, LOW); // Rote LED aus
isSequenceActive = false; // Setze den Sequenz-Aktiv-Zustand zurück
}
}
}
// Speichere den aktuellen Zustand als letzten Zustand
lastButtonState = reading;
}