{{ :wiki:arduino:ws812b.png?200|Címezhető RGB LED-ek}} ====== Címezhető RGB LED-ek ====== Az RGB LED-ek vezérlése 3 analógjelet igényel. Nyilván ez nagyszámú LED esetén már nem megvalósítható, így ezt a feladatot decentralizálni kell. A [[hu:comm:comdict#daisy_chain|Daisy Chain]] rendszerben egymás után felfűzött modulokon, minden LED mellett található egy vezérlőegység, mely négy feladatot hajt rögtön végre: - Fogadja a vezérlőegységtől, vagy az előző LED-től érkező jelsort, ebből leválasztja/kiválasztja a rá vonatkozó részt - Továbbadja a jelsort a következő LED felé - Dekódolja a jellemzően 3 byte-nyi színkombináció információt (1 byte / szín), összesen 16,8 millió színárnyalat - Vezérli a LED-et (digitális / [[hu:comm:start#pwm|PWM]] konverzió). A jelátvitel hasonlít egy szabványos [[hu:comm:start#uart|UART]] interfészhez, de nem az. Ez a kommunikáció rendkívül időspecifikus, a jelkódolás gyakorlatilag a jeltartási időkön keresztül történik: {{:wiki:arduino:ws2812_logic_0_1.png?400|A WS2812 logikai 0-ja és 1-e}} \\ //A WS2812 logikai 0-ja és 1-e// \\ Az adatok 24 bites "csomagokban" érkeznek az egységekhez, az adatsorokat egy 50μs "reset" zárja. Minden egység levágja a saját adatsorát a telegrammból, és a "maradék-részt" továbbítja csak: {{:wiki:arduino:ws2812_logic_data.png?600|A WS2812 telegrammja}} \\ //A WS2812 "egységenként csökkenő" telegrammja// \\ Nyilván a lenti megoldások némileg eltérnek egymástól. Jelenleg az ár / érték arányban a WS2812 sorozat áll nyerésre. ===== WS2811 ===== {{ :wiki:arduino:ws2811.png?200|WS2811}} A WS2811 címezhető LED rendszer a WS2801 megoldás továbbfejlesztett változata. Az ott alkalmazott, de lassúnak bizonyult SPI kommunikációt leegyszerűsítették egy speciális, időzítés alapú soros protokollra. Az átvitel 400 vagy 800 kHz-en történik. A WS2801 az átvitelhez 2 adatvezetéket használ, míg a WS2811-nek egy is elegendő. Minden LED mellett található egy címezhető WS2811 IC, mely egyrészt az adatvezeékről érkező színkombinációt tárolja, másrészt vezérli az RGB LED-et. ===== A WS2811 és WS2812 sorozat közötti különbségek ===== * A WS2811 külön tartalmazza az IC-t és a LED-et, míg a WS2812-ben integrálásra került a két rész * A WS2811 maximális feszültsége 7V, míg a WS2812 esetén ez 5,3V * A WS2812 a 11 továbbfejlesztett változata, az IC-k szoftverén is javítottak {{ :wiki:arduino:ws2812.png?200|WS2812}} ===== WS2812 ===== {{anchor:ws2812b}} A WS2812 egy [[hu:aktor:leds#smdled5050|5050]]-es SMD LED panelbe ágyazott WS2811 chip. Minden WS2812 "tudja" a 800 kHz-es jelátvitelt, így ezeknél ezt érdemes alkalmazni. ==== WS2812 specifikáció ==== * LED: RGB [[hu:aktor:leds#smdled5050|SMD LED 5050]] * Színárnyalatok: 256 * Üzemi feszültség: 5V * Teljesítmény LED-enként: 0.3W +/- 0.01% ==== WS2812 portjai ==== * **5V**: ez a szabályzott feszültség maradjon 5 és 7V között. Alacsonyabb feszültségszintnél csökken a fényerő, 7V-nél magasabbnál pedig sérülhetnek a modulok * **GND**: 0V. Az első modul és az Arduino közé a gnd és az 5v közé érdemes egy 100µF - 1000µF közötti kondenzátort beiktatni * **DI**: a vezérlő vagy az előző modul felől érkező jelvezeték. Az első modul és az Arduino közé az adatvonalon is érdemes egy 220 - 470 Ω közötti ellenállást beépíteni. * **DO**: a következő modul felé a jelvezeték. Utolsó modul esetén egyszerűen szabadon kell hagyni. ==== WS2812 bekötése ==== - A modulokat egymással össze kell kötni, egyszerűen: gnd↔gnd, 5v↔5v, do↔di, a címzés az összekötés sorrendjében fog működni - Az első modul és az Arduino közé a gnd és az 5v közé érdemes egy 100µF - 1000µF közötti kondenzátort beiktatni - Az első modul és az Arduino közé az adatvonalon is érdemes egy 220 - 470 Ω közötti ellenállást beépíteni - Az Arduno Pin 4-et össze kell kötni az első modul DI-jével. (nyilván, ha a Pin 4 nem megy, a kódot kell hozzápasszitani a változáshoz). {{:wiki:arduino:ws2812_wiring.png?600|WS2812 bekötése}} \\ A fenti példán a Sparkfun WS2812 moduljainak az Arduino-hoz kötése látható ==== WS2812 könyvtár / szoftver ==== Az Adafruit Neopixel könyvtár innen tölthető le: https://github.com/adafruit/Adafruit_NeoPixel \\ Az Adafruit Neopixel példaprogramok: https://github.com/adafruit/Adafruit_NeoPixel/tree/master/examples \\ A letöltött programokban a pin számát és az összekötött LED modulok számát is meg kell adni. 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 \\