Viele LEDs mit Arduino steuern – WS2812

Wenn man LEDs mit Arduino steuern möchte, stößt man schnell an die Grenzen der verfügbaren Kanäle. Wenn es RGB-LEDs sein sollen, geht das sogar noch schneller. Das Arduino UNO kann direkt nur zwei RGB-LEDs steuern, da diese jeweils drei analoge Kanäle brauchen (rot, grün, blau).

Abhilfe schaffen da LEDs mit integrierten Controllern, z.B. dem WS2812. Diese LEDs gibt es in unterschiedlichen Bauformen, von der 5mm LED bis zum LED-Streifen. Adafruit hat eine eigene Serie dazu entwickelt, die NeoPixel heißt.

LEDs

Arduino WS2812 LED 5mm
Jede LED mit WS2812 Controller verfügt über vier Anschlüsse. 5V+, GND, Din und Dout. Din steht für Data In, DO für Data Out. Bei den 5mm LEDs in diesem Tutorial ist die Pin-Belegung Din, 5V+, GND (längstes Beinchen), Dout.

Stromversorgung

WS2812 Stromversorgung
Jede WS2812 LED benötigt bis zu 60mA. Es ist also ratsam, ein Netzteil zu verwenden. Dieses Netzteil sollte mit einem Elektrolyt-Kondensator (1000uF, 6,3V) unterstützt werden. Der GND des Netzteils und der GND des Arduinos müssen verbunden werden.

Datenanschluss

ws2812 Anschluss Arduino NeoPixel
Nun kann man einfach einen digitalen Kanal des Arduinos über einen Widerstand (300 – 500 Ohm) mit dem Din der ersten LED verbinden. Ihr Dout wird dann wiederum mit dem Din der nächsten LED verbunden usw. Der Widerstand ist nur vor der ersten LED nötig.

Code

Wir nutzen einfach die NeoPixel-Library von Adafruit. Man kann sie von hier (https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-installation) herunterladen und sie muss ins Arduinoverzeichnis in den Unterordner libraries kopiert werden. Das Verzeichnis muss von Adafruit_NeoPixel-master auf Adafruit_NeoPixel umbenannt werden. Startet man nun die Arduino-Software neu, findet man unter Datei>Beispiele>Adafruit NeoPixel>simple.

Jetzt kann man einfach NUMPIXELS auf die Menge der LEDs einstellen, wie man verwenden will. Über den Befehl

lässt sich nun jede gewünschte Farbe (pixels.Color(255,255,255)) auf jede LED (ledNumber – Position der LED in der Reihe) anwenden.

Ich empfehle, sich auch mal das Beispiel>strandtest anzusehen. In diesem Beispiel sind schon ein paar Animationsfolgen eingebaut.

Woher bekommt man die Bauteile?

Kaufen kann man NeoPixel direkt bei Adafruit und man findet auch einiges bei Amazon:
WS2812 Produkte.

In diesem Beispiel habe ich diese LEDs verwendet:
WS2812 5mm LEDs

Inspiration

Vor einiger Zeit habe ich mal ein Glowboard mit WS2812 LED-Strips ausgestattet. Hier das Video dazu:

Referenzen

NeoPixel Best Practices
NeoPixel Library Installation

StartHardware.org – Arduino für Schulkinder

Starthardware.org
Heute mal was in eigener Sache. Gestern habe ich mein neues Projekt StartHardware.org veröffentlicht. Wie auf Arduino-Tutorial.de geht es darum, das Wissen um Arduino zu vermitteln. Diesmal ist die Zielgruppe allerdings etwas jünger.

StartHardware.org ist erstmal ein Online-Kurs für den Einstieg in Arduino und das Programmieren von Hardware. Elektronische Grundlagen werden ebenso wie Programmieren Schritt für Schritt erklärt. Am Ende kann man sich sein eigenes elektronisches Haustier basteln, dass mit den Augen blinzelt, meckert, wenn man sich nicht darum kümmert und das schnurre, wenn es gestreichelt wird.

Starthardware.org Starter Kit mit Arduino

Dazu kommt ein sehr günstiges Starter Kit, das ich zusammen mit meinen Partnern von TinkerSoup.de entwickelt habe. Es ist für 39,90 Euro erhältlich und beinhaltet alles für den Arduino-Start.

Also falls Ihr noch didaktisch wertvolle Weihnachtsgeschenke für Eure Kinder sucht, wäre ein StartHardware.org Starter Kit eine tolle Wahl ;-)

Funkübertragung von Messwerten mit dem RF Link Modul

Das RF Link Modul (Receiver und Transmitter) aus der RWS-371-Serie ist ein ziemlich günstiger Weg, Signale kabellos über kurze Distanzen zu übertragen. Dieses Beispiel zeigt, wie man es verwendet. Als Transmitter kannst Du die Module TLP 434, 434-A oder 916-A, als Receiver die Module RLP 434, 434-A, 916-A oder 916-F verwenden.

Die Funktionsweise der Module ist sehr einfach. Wenn der Daten-Pin des Sendemoduls getriggert wird, sendet es ein Signal. Der Empfänger empfängt es und schickt ein Signal an einen Pin des Mikrocontrollers.

Damit man mit dieser Funktion etwas Sinnvolles anstellen kann, werden wir die VirtualWire Bibliothek von Mike McCauley verwenden, die es uns ermöglicht, komplexe Daten zu übertragen.

Die Bibliothek kannst Du Dir von dieser Seite herunterladen. Sie muss in den libraries Ordner im Arduino-Benutzerordner kopiert werden. Danach musst Du die Arduino IDE erneut starten.

Ich schlage vor, dass Du die Schaltung einfach nachbaust und die Programme auf die beiden Microcontroller überträgst. Der Code ist ziemlich selbsterklärend: Sechs Analoge Inputs des Sendenden Mikrocontrollers werden ausgelesen und mittels RF Link Modul verschickt. Der empfangende Mikrocontroller sendet die empfangenen Daten dann an die serielle Schnittstelle. Mit dem Seriellen Monitor der Arduino-Software kann man sich die Daten ansehen.

Circuits using Arduino UNO

RF Link Modul mit Arduino

Circuits using the Teensy 3.1

RF Link Modul mit Teensy

Code für den Sender

Code für den Empfänger

Arduino

RF Link Modul mit Arduino

Teensy

RF Link Modul mit Teensy

Montage auf Breadboard. Für den Versuchsaufbau teilen sich beide Controller eine Stromquelle. Das ist natürlich nicht nötig.