{{ :wiki:arduino:ws812b.png?200|Adressierbare RGB-LEDs}} ====== Adressierbare RGB-LEDs ====== Die Steuerung von RGB-LEDs erfordert 3 analoge Signale. Offensichtlich ist dies für eine große Anzahl von LEDs nicht mehr möglich, daher muss diese Aufgabe dezentralisiert werden. In den im Daisy Chain-System in Reihe geschalteten Modulen befindet sich neben jeder LED eine Steuereinheit, die vier Aufgaben gleichzeitig ausführt: - Empfängt die Signalleitung von der Steuereinheit oder der vorherigen LED, trennt / wählt das entsprechende Teil aus - Übergibt die Signalfolge an die nächste LED - Dekodiert normalerweise 3 Bytes Farbkombinationsinformationen (1 Byte / Farbe) für insgesamt 16,8 Millionen Farbtöne - Steuert die LED (Digital / PWM-Wandlung). Die Signalübertragung ähnelt einer Standard-UART-Schnittstelle, ist es jedoch nicht. Diese Kommunikation ist extrem zeit-spezifisch, die Signalcodierung erfolgt praktisch über die Signalhaltezeiten: {{:wiki:arduino:ws2812_logic_0_1.png?400|WS2812 logisch 0 und 1}} \\ //WS2812 logisch 0 und 1// \\ Die Daten kommen in 24-Bit- "Paketen" bei den Einheiten an, die Datensätze werden durch ein 50 μs "Zurücksetzen" geschlossen. Jede Einheit schneidet ihren eigenen Datensatz aus dem Telegramm und überträgt nur den "Rest": {{:wiki:arduino:ws2812_logic_data.png?600|Das WS2812-Datenpaket}} \\ //WS2812 Telegramm "abnehmend pro Einheit"// \\ Offensichtlich unterscheiden sich die folgenden Lösungen geringfügig. Derzeit ist die WS2812-Serie der Gewinner in Bezug auf das Preis-Leistungs-Verhältnis. ===== WS2811 ===== {{ :wiki:arduino:ws2811.png?200|WS2811}} Das adressierbare LED-System WS2811 ist eine verbesserte Version der WS2801-Lösung. Die dort verwendete SPI-Kommunikation, die sich als langsam erwies, wurde zu einem speziellen, zeit-basierten seriellen Protokoll vereinfacht. Die Übertragung erfolgt bei 400 oder 800 kHz. Der WS2801 verwendet 2 Datenleitungen für die Übertragung, während der WS2811 eine verwendet. Neben jeder LED befindet sich ein adressierbarer WS2811-IC, der einerseits die Farbkombination aus der Datenleitung speichert und andererseits die RGB-LED steuert. ===== Unterschiede zwischen der WS2811- und der WS2812-Serie ===== * WS2811 enthält IC und LED separat, während WS2812 die beiden Teile integriert * Die maximale Spannung des WS2811 beträgt 7 V, während die des WS2812 5,3 V beträgt * WS2812 ist eine verbesserte Version der 11, die Software der ICs wurde ebenfalls verbessert {{ :wiki:arduino:ws2812.png?200|WS2812}} ===== WS2812 ===== {{anchor:ws2812b}} Der WS2812 ist ein WS2811-Chip, der in ein 5050 SMD LED-Panel eingebettet ist. Alle WS2812 "kennen" die 800-kHz-Signalübertragung, daher lohnt es sich, diese zu verwenden. ==== WS2812-Spezifikation ==== * LED: RGB [[hu:aktor:leds#smdled5050|SMD LED 5050]] * Farbtöne: 256 * Betriebsspannung: 5V * Leistung pro LED: 0.3W +/- 0.01% ==== WS2812-Ports ==== * ** 5V **: Halten sich diese geregelte Spannung zwischen 5 und 7V. Bei niedrigeren Spannungspegeln nimmt die Helligkeit ab und über 7 V können die Module beschädigt werden * ** GND **: 0V. Zwischen dem ersten Modul und dem Arduino ist es ratsam, einen Kondensator von 100µF bis 1000µF zwischen gnd und 5V zu installieren * ** DI **: Signalleitung von der Steuerung oder dem vorherigen Modul. Ein Widerstand zwischen 220 und 470 Ω sollte ebenfalls auf der Datenleitung zwischen dem ersten Modul und dem Arduino installiert werden. * ** DO **: Die Signalleitung zum nächsten Modul. Im Falle des letzten Moduls sollte es einfach frei gelassen werden. ==== WS2812 Verdrahtung ==== - Die Module sollten einfach miteinander verbunden werden: gnd↔gnd, 5v↔5v, do↔di, die Adressierung funktioniert in der Reihenfolge der Verbindung - Es wird empfohlen, einen Kondensator zwischen 100 und 1000 µF zwischen dem ersten Modul und dem Arduino zwischen gnd und 5 V zu installieren - Es lohnt sich, einen 220 - 470 Ω Widerstand auf der Datenleitung zwischen dem ersten Modul und dem Arduino zu installieren - Arduino Pin 4 muss an den DI des ersten Moduls angeschlossen werden. (Wenn Pin 4 nicht funktioniert, muss der Code natürlich an die Änderung übergeben werden.) {{:wiki:arduino:ws2812_wiring.png?600|WS2812 Verdrahtung}} \\ Das obige Beispiel zeigt den Anschluss von Sparkfun WS2812-Modulen an Arduino ==== WS2812 Bibliothek / Software ==== Die Adafruit Neopixel-Bibliothek kann hier heruntergeladen werden: https://github.com/adafruit/Adafruit_NeoPixel \\ Beispiel Adafruit Neopixel-Programme: https://github.com/adafruit/Adafruit_NeoPixel/tree/master/examples \\ In den heruntergeladenen Programmen müssen auch die Anzahl der Pins und die Anzahl der angeschlossenen LED-Module angegeben werden. Forrás: https://learn.sparkfun.com/tutorials/ws2812-breakout-hookup-guide ===== WS2801 ===== Ez a "klasszikus" megoldás a címezhető LED-ekre. Ez még SPI kommunikációt alkalmazott, az órajelet PWM-mel állította elő és RGB csatornálat tartlamazott, az alegységeket (kvázi az RGB LED-eket) [[hu:comm:comdict#daisy_chain|Daisy Chain]] rendszerben fűzte össze. Ugyanennek a megoldásnak az LPD8806 egy szabadalmaztatott és rendkívül rosszul dokumnetált változata, melyet az Adafruit integrált a rendszerébe. Mindkét megoldás viszonylag bonyolult és lassabb, mint a WS2811/WS2812. ===== LPD8806 ===== {{anchor:lpd8806}} Lásd fent, WS2801. ==== Források ==== http://www.doityourselfchristmas.com/wiki/index.php?title=Different_Styles_of_Pixels \\ https://digistump.com/board/index.php?topic=991.0 \\