Diody LED ze sterownikem APA102
Diody LED ze sterownikiem APA102 to kolejna propozycja dla osób planujących stworzenie sterowanego oświetlenia z wykorzystaniem diod RGB. W odróżnieniu od opisywanych już wcześniej taśm ze sterownikami WS2812 i WS2813, taśma ta wykorzystuje interfejs SPI 2-wire, zdolny do osiągnięcia prędkości transmisji nawet do 12MHz. Jeśli chodzi zaś o częstotliwość odświeżania, to wynosi ona aż 20kHz, co czyni APA102 wręcz idealną do wszelkich aplikacji POV.
Struktura wewnętrzna diody ze sterownikiem APA102C
Największą przewagą tych taśm nad popularnymi WS2812/WS813 jest właśnie szybki interfejs SPI, który zwalnia nas z pilnowania dość sztywnych timingów, które mogą być problemem przy sterowaniu ich przez wielozadaniowe systemy SoC, jak np. Raspberry PI.
Co ciekawe - sterownik ten oprócz 256 skali poziomu świecenia diod RGB (grayscale), posiada również 5 bitową kontrolę jasności (32 poziomy).
Reasumując APA102 to propozycja z wysokiej półki, która niestety do najtańszych nie należy. Jeśli jednak weźmiemy pod uwagę ogromną częstotliwość odświeżania PWM oraz szybki interfejs SPI, cena nie okazuje się jakoś specjalnie droga w przeliczeniu na diodę.
Sterowanie
Do sterowania APA102 możemy wykorzystać popularną bibliotekę dla Arduino FastLED:
- #include "FastLED.h"
- #define NUM_LEDS 60
- #define DATA_PIN 11
- #define CLOCK_PIN 13
- CRGB leds[NUM_LEDS];
- void setup()
- {
- FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
- // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB, DATA_RATE_MHZ(12)>(leds,NUM_LEDS);
- LEDS.setBrightness(255);
- }
- void fadeall()
- {
- for (int i = 0; i < NUM_LEDS; i++)
- {
- leds[i].nscale8(250);
- }
- }
- void loop()
- {
- static uint8_t hue = 0;
- for (int i = 0; i < NUM_LEDS; i++)
- {
- leds[i] = CHSV(hue++, 255, 255);
- FastLED.show();
- fadeall();
- }
- for (int i = (NUM_LEDS)-1; i >= 0; i--)
- {
- leds[i] = CHSV(hue++, 255, 255);
- FastLED.show();
- fadeall();
- }
- }
Oprócz standardowej definicji taśmy LED:
addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
możemy skorzystać z rozszerzonej wersji, podając interesującą nas prędkość SPI:
addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB, DATA_RATE_MHZ(5)>(leds,NUM_LEDS);
Szybkość taśm WS2812 można z grubsza porównać do APA102 pracującej z częstotliwością magistrali SPI 1MHz. Jak to wygląda dalej? Poniżej porównanie:
W przypadku Raspberry PI możemy skorzystać z projektu APA102_Pi lub podobnego.
Reklama
Komentarze
Pytanie niezwiązane z wpisem.
Czy wrócą na stronę RSS.
Gdzie mozna dostać taką taśme w polce bo ofert jest niestety niewiele...
OFFTOP:
chyba autor strony został ojcem :-)
pół roku bez update-u.....
(SUPER strona, kiedy nowe arty?)
pozdrawiam
blog umarł?
szkoda bo super sie czytało