Jeder Geburtstag ist etwas besonderes. Damit auch die Party in Erinnerung bleibt, spielt die Tischdeko eine wesentliche Rolle. Zur Unterstützung der Luftballons, Konfetti und Luftschlangen habe ich mir eine elektronische Variante mit Arduino-Technik überlegt.
Bei uns ist es üblich, dass an den Geburtstagen der Kinder das neue Alter als Zahl auf dem Tisch steht z. B. eine 10. Bisher waren diese meistens aus Papier, Pappe oder Holz. Das wollte ich dieses Mal übertreffen. Die Idee war ziemlich schnell klar. Es sollte eine 11 mit verschiedenen LED’s sein die blinken.
Am Anfang wollte ich eine einfache bistabile Kippschaltung hernehmen und die LED’s abwechselnd blinken lassen. Das habe ich aber schnell wieder verworfen. Wer mag es schon, wenn es den ganzen Abend nur blinkt.
Die Arduino Version
Damit war klar, dass Projekt braucht auch ein wenig Programmierung. Deshalb viel die Wahl auf eine Steuerung durch einen Arduino UNO. Der bietet die notwendige Anzahl an Ausgängen und die Programmierung lässt für diesen Fall keine Wünsche übrig, da nur LED’s ein- oder ausgeschaltet werden sollen.
Symbolhaft wird jede LED auf diese einfache Weise direkt am Pin über einen Vorwiderstand angeschlossen:
Aber man darf sich nicht täuschen lassen. Wenn man alle Ausgänge verwendet, kommt schon eine ganz schöne Menge an Leitungen zumsammen. Die Vorwiderstände der LED’s sitzen bei mir auf einer kleinen Platine, die auch noch einen Stecker für den Arduino enthält. So kann man sie als kleines Shield verwenden und auch entsprechend wieder abziehen.
Dadurch gibt es zu den einzelnen LED’s nur noch eine Leitung.
Die Leitung zu GND wird einfach von LED zu LED weiterverbunden.
Die Stromversorgung kommt über 4 x 1,5 V Batterien, die mit einem Schalter ein- und ausgeschaltet werden können. Der Batteriehalter ist mit Heißkleber an der Holzplatte befestigt.
Der Arduino wurde mit zwei Schrauben und Abstandhaltern an die Holzplatte geschraubt
Licht-Effekte
Wie die einzelnen LED geschaltet werden, bleibt natürlich Ihrer Phantasie überlassen. Die Effekte, die ich mir überlegt habe, können Sie sich in diesem Video anschauen.
Der Arduino-Quellcode
Wie die Effekte im Sourcecode aussehen, finden Sie in den einzelnen Void’s Effekt1 bis Effekt5.
//Start-Pin festlegen //A=linke Eins //B=rechte Eins int PinA1=0; int PinB1=7; void setup() { //alle Pins als Output setzen for (int i=PinA1;i<PinA1+7;++i) pinMode(i,OUTPUT); for (int i=PinB1;i<PinB1+7;++i) pinMode(i,OUTPUT); } //Ab hier kommen die verschiedenen Effekte: void Effekt1() { for (int i=1;i<=10;++i) { digitalWrite(PinA1+0,HIGH); digitalWrite(PinA1+2,HIGH); digitalWrite(PinA1+4,HIGH); digitalWrite(PinA1+6,HIGH); digitalWrite(PinA1+1,LOW); digitalWrite(PinA1+3,LOW); digitalWrite(PinA1+5,LOW); delay(300); digitalWrite(PinA1+0,LOW); digitalWrite(PinA1+2,LOW); digitalWrite(PinA1+4,LOW); digitalWrite(PinA1+6,LOW); digitalWrite(PinA1+1,HIGH); digitalWrite(PinA1+3,HIGH); digitalWrite(PinA1+5,HIGH); delay(300); digitalWrite(PinB1+0,HIGH); digitalWrite(PinB1+2,HIGH); digitalWrite(PinB1+4,HIGH); digitalWrite(PinB1+6,HIGH); digitalWrite(PinB1+1,LOW); digitalWrite(PinB1+3,LOW); digitalWrite(PinB1+5,LOW); delay(300); digitalWrite(PinB1+0,LOW); digitalWrite(PinB1+2,LOW); digitalWrite(PinB1+4,LOW); digitalWrite(PinB1+6,LOW); digitalWrite(PinB1+1,HIGH); digitalWrite(PinB1+3,HIGH); digitalWrite(PinB1+5,HIGH); delay(300); } } void Effekt2() { for (int i=1;i<=4;++i) { //Blau digitalWrite(PinA1+0,HIGH); digitalWrite(PinA1+2,HIGH); digitalWrite(PinA1+4,HIGH); digitalWrite(PinA1+6,HIGH); digitalWrite(PinB1+0,HIGH); digitalWrite(PinB1+2,HIGH); digitalWrite(PinB1+4,HIGH); digitalWrite(PinB1+6,HIGH); digitalWrite(PinA1+1,LOW); digitalWrite(PinA1+3,LOW); digitalWrite(PinA1+5,LOW); digitalWrite(PinB1+1,LOW); digitalWrite(PinB1+3,LOW); digitalWrite(PinB1+5,LOW); delay(2000); //Rot digitalWrite(PinA1+1,HIGH); digitalWrite(PinA1+3,HIGH); digitalWrite(PinA1+5,HIGH); digitalWrite(PinB1+1,HIGH); digitalWrite(PinB1+3,HIGH); digitalWrite(PinB1+5,HIGH); digitalWrite(PinA1+0,LOW); digitalWrite(PinA1+2,LOW); digitalWrite(PinA1+4,LOW); digitalWrite(PinA1+6,LOW); digitalWrite(PinB1+0,LOW); digitalWrite(PinB1+2,LOW); digitalWrite(PinB1+4,LOW); digitalWrite(PinB1+6,LOW); delay(2000); } } void Effekt3() { for (int i=6;i>=0;--i) { digitalWrite(PinA1+i,HIGH); digitalWrite(PinB1+i,HIGH); delay(1000); } } void Effekt4() { for (int i=0;i<=6;++i) { digitalWrite(PinA1+i,HIGH); digitalWrite(PinB1+i,HIGH); delay(1000); } } void Effekt4b() { for (int i=0;i<=6;++i) { digitalWrite(PinA1+i,LOW); digitalWrite(PinB1+i,LOW); delay(1000); } } void AlleEin() { for (int i=0;i<=6;++i) { digitalWrite(PinA1+i,HIGH); digitalWrite(PinB1+i,HIGH); } } void AlleAus() { for (int i=0;i<=6;++i) { digitalWrite(PinA1+i,LOW); digitalWrite(PinB1+i,LOW); } } void Effekt5() { for (int i=0;i<=6;++i) { AlleAus(); digitalWrite(PinB1+i,HIGH); delay(300); } for (i=0;i<=6;++i) { AlleAus(); digitalWrite(PinA1+i,HIGH); delay(300); } AlleAus(); } void loop() { Effekt5(); Effekt4(); Effekt4b(); Effekt5(); Effekt3(); Effekt4b(); Effekt5(); Effekt2(); Effekt1(); Effekt5(); AlleEin(); delay(10000); AlleAus(); delay(60000); //Pausen sind auch ganz gut... }
Das Design der 11 kommt übrigens von Artecktika. Schauen Sie doch mal bei artecktika.wordpress.com vorbei.
Pingback: 12. Geburtstag: „Projekt 12“ – Mein Techblog