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