LED-Lichterkette selber bauen

LED-Kette oder LED-Streifen

Es gibt sehr viele Arten von LED-Ketten bzw. LED-Streifen. Hier zeige ich euch, wie ihr selbst welche bauen könnt. Da wir das Ganze wieder über den Arduino steuern, können wir unterschiedliche Taktfrequenzen selbst programmieren.

Neue Themen

Wie ihr schon gemerkt habt, ähnelt sich bei vielen meiner Projekte der Programmcode. Um alles ein wenig einfacher und übersichtlicher zu gestalten habe ich eine Klasse erstellt. Diese habe ich in einer library abgelegt und werde sie euch zur Verfügung stellen.

Außerdem werden wir diesmal das alles von der Ferne bedienen. Bei diesem Projekt verwenden wir eine Fernbedienung und einen Infrarotempfänger.

Für dieses Projekt habe ich selbst eine Platine entworfen und diese anfertigen lassen.

Leider dauert der Versand etwa einen Monat. Aber da ich davon mehrere bestellt habe, könnt ihr diese auf Anfrage auch bei mir erwerben.

Was kann meine Schaltung?

Wir haben fünf verschiedene LED’s (grün, orange, gelb, rot und blau). Ich habe von jeder Farbe vier Stück gewählt und das macht in Summe 20 LED’s. Da wir gleichzeitig nicht so viele LED’s über die digitalen Ausgänge schalten können, wird jede gleiche LED-Farbe über einen separaten Transistor geschaltet. Wir können jede Farbe einzeln ansteuern.

Das ist der Grundgedanke dieser Schaltung. Ich habe mich für fünf Programme entschieden, die wir über die Fernbedienung ändern können. Eins davon ist ein Lauflicht. Eine LED bleibt 500 ms an, schaltet sich dann ab. Danach schaltet sich die Nächste ein usw. Meinen Programmcode habe ich so gestaltet, dass ihr euch ganz einfach eure eigenen LED-Programme mit unterschiedlichen Taktfrequenzen anfertigen könnt. Dazu gibt es meine library.

Gehäuse

Natürlich könnt ihr euer Gehäuse selbst auswählen. Ich habe mich für eine Holzleiste entschieden. Die Lochdurchmesser für die LED’s entsprechen dem Durchmesser der LED’s. In meinem Fall waren es 3 mm.

Schaltplan

Kurze Erklärung: Beim Schaltbild seht ihr nur eine LED. Ich habe vier von jeder Farbe genommen und den entsprechenden Widerstand gewählt, wenn ihr die LED-Anzahl verändert, müsst ihr auch den Widerstand verändern. Oder ihr baut in eure Schaltung vor jeder LED einen passenden Vorwiderstand ein. Bei mir habe ich für grün 560 Ohm, blau 220 Ohm, rot, gelb und orange 33 Ohm gewählt. Ich habe es mit den LED’s getestet, dass die Helligkeit überall gleich ist. Je nach LED-Sorte kann der Widerstandswert abweichen. Der Widerstandswert für die Basis vom Transistor beträgt 1,5 kOhm.

Teileliste

Das Arduino Einsteigerset habe ich mir auch mal geholt. Dort sind viele nützliche Sachen dabei, die ich für meine ganzen Projekte verwende. Daraus stammt auch der Infrarotempfänger mit der Fernbedienung. Falls ihr euch die Fernbedienung mit dem Empfänger einzeln bestellen möchtet, müsst ihr den Programmcode vermutlich etwas abwandeln, weil es nicht die gleiche Fernbedienung wie bei mir ist. Ich kann euch nur das Set empfehlen, damit kann man viel herumprobieren und diese Teile in Projekten verbauen.

Programmcode LED-Streifen

LED_Streifen

In dieser Zip-Datei befinden sich die IRremote-Bibliothek und meine erstellte Bibliothek LedWithMillis, die ich euch kostenlos zur Verfügung stelle. An diesem Punkt möchte ich trotzdem gern auf meinen Spendenlink hinweisen. Falls euch meine Arbeit gefällt und ihr mich unterstützen wollt, könnt ihr das gern hier tun. Das ist natürlich völlig zwanglos.

Zur Programmierung:

Einige Sachen werde ich nicht erläutern. Die gehören zu der IRremote-Library und können so übernommen werden.

Zu Beginn werden die Bibliotheken eingebunden. Danach erstellen wir fünf Objekte aus meiner Klasse.
Im Setup Teil weisen wir die Pin-Belegung für die LED’s zu. Angenommen ihr möchtet eine 6. LED hinzufügen schreibt ihr zum Beispiel violet.setup(7);
Das Ganze klappt natürlich nur, wenn ihr vorher außerhalb des setup und loop Teils ein neues Objekt erzeugt habt LedWithMillis violet;

Die translateIR Funktion (am Ende des Codes), gehört zur IRremote-Library und weist die Tasten auf der Tastatur zu und was passieren soll, wenn man eine gewisse Taste drückt. Ich habe mir gewisse Werte herausgesucht, die ich für mein Projekt benötige. Ihr könnt gern alle Tasten der Fernbedienung benutzen. Mir reichen sechs davon aus. Der Code ist sehr leicht erweiterbar.

loop-Teil

Kommen wir zur Anweisung die folgt, wenn die Taste „1“ gedrückt wird. Sichtbar in Zeile 40 if (results.value == 0xff30cf) //1
Nun erkläre ich euch, wie ihr meine Klasse verwenden könnt. Ihr ruft zuerst das Objekt auf. Dann folgt ein Punkt und der Funktionsname. Falls ihr VisualStudio zum Programmieren verwendet, schlägt er euch die möglichen Funktionen nach Eingabe des Punktes vor. Wir wählen setLedTime. Bei VisualStudio werden die drei Variablen, die man eingeben muss angezeigt. Das ist sehr hilfreich und erleichtert enorm das Programmieren. Der erste Wert ist ein integer und steht für die Zeit, wie lange die LED leuchten soll. Der zweite integer steht für die Zeit, wie lange die LED ausbleibt. Der letzte Wert hat den Datentyp boolean. Er kann also HIGH oder LOW sein. Gebt ihr HIGH ein, wird die LED zuerst an sein und dann aus. Bei LOW ist die LED zuerst aus und dann an. Man könnte das Ganze auch über delays erzeugen. Der Nachteil ist, dass der Arduino in der Zeit, wo eine Pause ist, in der if-Anweisung „gefangen“ ist. Wenn wir also das Lichtprogramm wechseln möchten, würde erst die if-Anweisung mit den ganzen delays abgearbeitet werden und nach mehreren Sekunden das Programm wechseln. Das wollen wir natürlich nicht und deshalb habe ich für dieses Problem eine library geschrieben.

Wiederholung

Bei der Tasten 2 und 3 passieren ähnliche Dinge. Die Tasten 5 und „power“ sollten selbsterklärend sein. Bei der Taste 4 wurde eine andere Funktion verwendet. setLedTimeAndChanceMillis ermöglicht, dass die LED zeitversetzt angehen bzw. ausgehen. Hier ist der erste Wert wieder ein integer und man gibt die Millisekunden an.

Das war im Großen und Ganzen das Programm. Noch ein kleiner Hinweis. Wollt ihr eine weitere Aktion einer Taste zuordnen, könnt ihr das ganz einfach tun. Im loop-Teil erstellt ihr eine if-Anweisung und fragt results.value == ab. Nach den beiden == Zeichen sucht ihr euch den entsprechenden Wert zwischen Zeile 110 und 131 heraus. Für die „7“ ist das dann 0xFF42BD und für die „8“ 0xFF4AB5 usw. Falls eine Taste vom Sensor nicht erkannt wird, bleibt das aktuelle Programm. Das habe ich in Zeile 136 festgelegt.

Falls fragen sind, immer wieder gern stellen.

Video

Hier seht ihr mein Lauflicht

Schreibe einen Kommentar

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