Zum Inhalt springen
Arduino Lichterkette Augen Gebüsch

Es spukt im Gebüsch

    Es wird früher dunkel. Die perfekte Jahreszeit um etwas Arduino-Zauber in den Vorgarten zu bringen. Heute mit leuchtenden Augen im Gebüsch.

    Dazu brauchst du nur ein paar rote LEDs und ein paar Meter Kabel. Das bekommst du, wenn du ein altes Netzwerkkabel opferst. Darin befinden sich acht Adern aus massivem Drat.

    Löte zwei LEDs aneinander. Achte darauf, dass du jeweils die langen und kurzen Beinchen verbindest. Dann löte jeweils noch ein Drahtende fest.


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    Arduino Lichterkette LEDs

    Biege die beiden LEDs, sodass sie in die gleiche Richtung leuchten. Das wären also schon mal zwei Augen. Wiederhole das, solange du Lust hast. Ich hab neun Augenpaare gelötet.

    Schaltplan

    Arduino Lichterkette

    Knüpfe aus dem Kabel einen Kabelbaum, bei dem die GND-Ader die gesamte Länge ausmacht. Die Augenpaare sollten ca. 15 cm auseinander sein. Pro Augenpaar brauchst du nun ein Versorgungskabel mit Vorwiderstand (220 Ohm). Diese kannst du entweder direkt anlöten, oder ein kleines Breadboard zwischenschalten.

    Code

    Das Arduino-Programm setzt sich im Grunde aus drei Phasen zusammen. Dem Aufwachen, dem Blinzeln (Twinkle) und dem Einschlafen. Diese Funktionen werden zeitgesteuert aufgerufen und erzeugen das Verhalten der Augen im Gebüsch.

    int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
    int ledState[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
    int ledNumber = 9;
    int theLED;
    long myTimer = 0;
    int myTimerout = 20000;
    
    boolean sleeping = true;
    
    void setup() {
      // put your setup code here, to run once:
      for (int i = 0; i < ledNumber; i++) {
        pinMode(ledPins[i], OUTPUT);
        digitalWrite(ledPins[i], LOW);
      }
      randomSeed(analogRead(0));
    }
    
    void aufwachen() {
      while (sleeping) {
        int ledSum = 0;
        for (int i = 0; i < ledNumber; i++) {
          ledSum += ledState[i];
        }
        if (ledSum == ledNumber) sleeping = false;
    
        theLED = random(ledNumber);
        if (random(10) == 1) {
          ledState[theLED] = 1;
          digitalWrite(ledPins[theLED], HIGH);
        }
        delay(20);
      }
    }
    
    void einschlafen() {
      while (!sleeping) {
        int ledSum = 0;
        for (int i = 0; i < ledNumber; i++) {
          ledSum += ledState[i];
        }
        if (ledSum == 0) sleeping = true;
    
        theLED = random(ledNumber);
        if (random(10) == 1) {
          ledState[theLED] = 0;
          digitalWrite(ledPins[theLED], LOW);
        }
        delay(20);
      }
    }
    
    void twinkle(int theLED) {
      digitalWrite(theLED, LOW);
      delay(100);
      digitalWrite(theLED, HIGH);
    }
    
    void loop() {
      if (sleeping) {
        if (random(1000) == 1) {
          aufwachen();
          myTimer = millis();
        }
      } else {
        if (random(30) == 1) twinkle(random(ledNumber));
        if (myTimer + myTimerout < millis()) {
          einschlafen();
          delay(10000);
        }
      }
      delay(10);
    }

    Jetzt kannst du die Lötstellen an den LEDs noch mit Isolierband umwickeln und das Arduino selbst mit Netzteil und Breadboard in eine Plastiktüte verpacken. Ein Gummiband rum und ab ins Beet. Die Öffnung der Tüte sollte natürlich nach unten zeigen.


    Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

    • Die beliebtesten Arduino-Projekte von StartHardware
    • Inklusive Schaltplan, Beschreibung und Code
    • Arduino-Schnellstart-Kapitel
    • Kompakter Programmierkurs


    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

     

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.