#include <Arduino.h>
#define NUM_LEDS 8 // Anzahl der LEDs
int leds[NUM_LEDS] = {D2, D3, D4, D5, D6, D7, D8, D9}; // Pins für die LEDs
#define BUTTON_PIN D10 // Pin für den Taster
bool reverse = false; // Variable für die Richtung (false = vorwärts, true = rückwärts)
unsigned long lastDebounceTime = 0; // Entprellzeit
const unsigned long debounceDelay = 50; // Entprellzeit in ms
void setup() {
// LEDs als OUTPUT konfigurieren
for (int i = 0; i < NUM_LEDS; i++) {
pinMode(leds[i], OUTPUT);
digitalWrite(leds[i], LOW); // LEDs ausschalten
}
// Taster als INPUT_PULLUP konfigurieren
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
static int currentLED = 0; // Index der aktuellen LED
static unsigned long lastTime = 0; // Zeit der letzten LED-Aktion
const unsigned long interval = 100; // Zeitintervall zwischen den LEDs
// Tasterzustand überprüfen
if (digitalRead(BUTTON_PIN) == LOW) { // Taster gedrückt
if (millis() - lastDebounceTime > debounceDelay) { // Entprellung
reverse = !reverse; // Richtung ändern
lastDebounceTime = millis(); // Zeit aktualisieren
}
}
// LEDs schalten
if (millis() - lastTime >= interval) {
// Alle LEDs ausschalten
for (int i = 0; i < NUM_LEDS; i++) {
digitalWrite(leds[i], LOW);
}
// Nächste LED basierend auf der Richtung
if (reverse) {
currentLED = (currentLED - 1 + NUM_LEDS) % NUM_LEDS; // Rückwärts
} else {
currentLED = (currentLED + 1) % NUM_LEDS; // Vorwärts
}
// Aktuelle LED einschalten
digitalWrite(leds[currentLED], HIGH);
// Zeit aktualisieren
lastTime = millis();
}
}