3D-Drucker

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 Dratende fest.

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.

Willst du noch mehr über Arduino erfahren, damit du so richtig durchstarten kannst?
Oder suchst du spannende Projekte zum Nachbauen?
Dann sieh' dir unbedingt die E-Books von StartHardware an.


Bevor du gehst, würdest du mir helfen, diese Website besser zu machen, indem du ganz kurz an einer Umfrage teilnimmst? Sind nur zehn Fragen und das würde mir sehr viel bedeuten.

Ich hoffe, der Beitrag hilft dir weiter. Und falls du weitere Fragen hast, stelle sie gern hier im Arduino-Forum.

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.