// Definiere die Pins für die Buchstaben
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
const int numLeds = sizeof(ledPins) / sizeof(ledPins[0]);
// Zeitverzögerung für die Animation in Millisekunden
const int animationDelay = 200;
// Variable, um den Fortschritt der Animation zu verfolgen
int maxActiveLeds = 1;
void setup() {
// Setze alle Pins als Ausgänge und stelle sicher, dass alle LEDs ausgeschaltet sind
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW); // Schalte alle LEDs aus
}
// Initialisiere den Zufallsgenerator
randomSeed(analogRead(0));
}
void loop() {
// "Hereinfliegen" der LEDs von links nach rechts bis zur maximal aktivierten LED
for (int i = 0; i < maxActiveLeds; i++) {
digitalWrite(ledPins[i], HIGH); // Schalte die aktuelle LED ein
delay(animationDelay);
}
// Wenn wir die maximale Anzahl der LEDs erreicht haben, bleibt diese eingeschaltet
if (maxActiveLeds < numLeds) {
maxActiveLeds++; // Erhöhe die Anzahl der aktivierten LEDs für den nächsten Zyklus
} else {
// Halte alle LEDs für eine Weile an, wenn sie alle eingeschaltet sind
unsigned long startTime = millis();
while (millis() - startTime < 5000) { // 5 Sekunden lang flackern
int numBlinkingLeds = random(1, 6); // Zufällig 1 bis 5 LEDs auswählen
for (int i = 0; i < numBlinkingLeds; i++) {
int randomLed = random(0, numLeds); // Zufällige LED auswählen
digitalWrite(ledPins[randomLed], LOW); // LED aus
delay(random(50, 150)); // Kurze Verzögerung für kaputtes Flackern
digitalWrite(ledPins[randomLed], HIGH); // LED wieder an
delay(random(50, 200)); // Kurze Verzögerung für kaputtes Flackern
}
}
// Schalte alle LEDs aus, um die Animation erneut zu starten
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
maxActiveLeds = 1; // Setze die Animation zurück, um wieder bei der ersten LED zu starten
}
// Kurze Pause vor dem Neustart der Animation
delay(1000);
}