Eksperymentowałem z płytką Arduino i taśmą LED WS2811, która działa idealnie, ale nie rozumiem, skąd dana dioda LED wie, kiedy jest wywoływana lub adresowana. Czy każda dioda ma unikalny adres?
Eksperymentowałem z płytką Arduino i taśmą LED WS2811, która działa idealnie, ale nie rozumiem, skąd dana dioda LED wie, kiedy jest wywoływana lub adresowana. Czy każda dioda ma unikalny adres?
WS2811 to układ sterownika, który jest osadzony w pasku. W zasadzie jest to jakiś rejestr przesuwny, który wysyła wartości PWM, a na pasku są one połączone łańcuchowo (wyjście danych jednego jest połączone z wejściem danych następnego). Dzięki Arduino przesuniesz strumień bajtów, używając paska RGB 3 bajty na diodę LED (1 bajt na kolor). Pierwszy WS2811 odczytuje te 3 bajty, ustawia swoje wyjścia (PWM) zgodnie z nimi i wyprowadza resztę strumienia danych do innego pinu, aby mógł dotrzeć do następnego WS2811. Diody LED na pasku są podłączone do wyjść WS2811.
Zatem w sumie układ WS2811 zapisuje aktualny pożądany stan swojej diody LED, którą otrzymał poprzez strumień danych z Arduino. Żetony nie mają bezpośredniego adresu, ale można je zidentyfikować po ich położeniu na pasku. Więc nie możesz tylko pisać do 5-tej diody LED bez zapisywania wartości do diod LED przed nią. Ale jeśli nie chcesz ustawiać całego paska, możesz wyprowadzić mniej danych niż pasek jako diody LED, skutecznie ignorując diody LED na końcu.
EDYCJA:
ale jak rozpoznaje pierwszą diodę?
Pasek przypomina trochę linię danych. Kiedy spojrzysz na oznaczenia tej linii na obu końcach paska, zwykle powinieneś zobaczyć coś w rodzaju „DI” i „DO”, co oznacza wejście i wyjście danych, każde na jednym końcu paska. Każda dioda LED ma własne wejście i wyjście danych, które są połączone z następną i poprzednią diodą LED. Pierwsza i ostatnia dioda LED wystawia odpowiednio wejście lub wyjście danych na zewnątrz paska. Wprowadzasz dane do wejścia danych pierwszego sterownika LED, który wyprowadza resztę danych na swój pin Data Out, skąd dane mogą zostać przesłane do następnego sterownika. Zatem kierunek, w którym dane przepływają przez pasek, jest już zdefiniowany i zaprogramowany na stałe. Nie można przesyłać danych w drugą stronę przez pasek. Tak więc pierwsza dioda to ta, która jest bezpośrednio podłączona do linii Data In paska i będzie podłączona do Arduino.
Pamiętaj, że to nie jest adres. Możesz wyciąć pasek w odpowiednim miejscu (aby nie zniszczyć obwodu. Większość pasków ma te kawałki regularnie po każdej lub co trzeciej diodzie LED) i uzyskać nową pierwszą diodę LED, jeśli teraz podłączysz wejście danych, gdzie przeciąć pasek do Arduino. Taśma LED z WS2811 nie jest tablicą ani matrycą diod LED, jest łańcuchem diod LED. Ta różnica jest ważna w tym, jak je kontrolujesz.
Jednostki LED nie mają własnych unikalnych adresów, zamiast tego są indeksowane według ich pozycji w ciągu diod LED. Kiedy podajesz dane do pierwszej diody LED, umieszczasz całą sekwencję wartości kolorów w pierwszej. Następnie ustawi swój własny kolor na pierwszy w sekwencji, a całą resztę wyśle do następnej diody w serii.
Żadna z diod LED nie „wie”, w którym miejscu paska się znajduje zlokalizowane, pobierają tylko pierwszą wartość, która pojawia się i ustawiają swój własny kolor na tę wartość, a następnie przekazują pozostałe wartości do następnej diody LED w serii.