Jak podłączyć adresowalną taśmę LED WS2812B do Arduino?
Rozwój technologii oświetleniowej opartej na diodach LED trwa bardzo szybko. Jeszcze wczoraj sterowane kontrolerem wstążki RGB, których jasność i kolor można regulować za pomocą pilota, wydawały się cudem. Dziś na rynku pojawiły się lampy o jeszcze większej liczbie funkcji.
Taśma LED na bazie WS2812B
Różnica między adresowalną taśmą LED a standardową RGB Chodzi o to jasność i proporcje kolorów każdego elementu są regulowane osobno. Pozwala to uzyskać efekty świetlne, które są zasadniczo niedostępne dla innych typów urządzeń oświetleniowych. Świecenie adresowalnej taśmy LED jest kontrolowane w znany sposób - za pomocą modulacji szerokości impulsu. Cechą systemu jest wyposażenie każdej diody LED we własny kontroler PWM. Układ WS2812B to trójkolorowa dioda świecąca i obwód sterujący połączone w jednym pakiecie.

Elementy łączone są równolegle w taśmę zasilającą, a sterowanie odbywa się poprzez magistralę szeregową – wyjście pierwszego elementu jest połączone z wejściem sterującym drugiego itd. W większości przypadków magistrale szeregowe zbudowane są na dwóch liniach, z których jedna przesyła stroboskopy (impulsy zegarowe), a druga - dane.

Magistrala sterująca układu WS2812B składa się z jednej linii - przez nią przesyłane są dane. Dane są kodowane jako impulsy o stałej częstotliwości, ale z różnymi cyklami pracy. Jeden impuls - jeden bit. Czas trwania każdego bitu wynosi 1,25 µs, bit zerowy składa się z wysokiego poziomu z czasem trwania 0,4 µs i niskiego poziomu 0,85 µs. Jednostka wygląda jak wysoki poziom dla 0,8 µs i niski poziom dla 0,45 µs. Do każdej diody LED wysyłany jest 24-bitowy (3-bajtowy) impuls, po którym następuje przerwa na niskim poziomie trwająca 50 µs. Oznacza to, że dane będą przesyłane dla następnej diody LED i tak dalej dla wszystkich elementów łańcucha. Transmisja danych kończy się przerwą 100 µs. Oznacza to, że cykl programowania taśmy jest zakończony i można wysłać następny zestaw pakietów danych.

Taki protokół pozwala na pokonanie jednej linii do transmisji danych, ale wymaga dokładności w zachowaniu odstępów czasowych. Rozbieżność jest dozwolona nie więcej niż 150 ns. Ponadto odporność na zakłócenia takiej magistrali jest bardzo niska. Wszelkie zakłócenia o wystarczającej amplitudzie mogą być odbierane przez administratora jako dane. Nakłada to ograniczenia na długość przewodów z obwodu sterującego. Z drugiej strony dzięki temu jest to możliwe kontrola stanu wstążki bez dodatkowych urządzeń.Jeśli włączysz zasilanie lampy i dotkniesz palcem pola stykowego magistrali sterującej, niektóre diody LED mogą losowo zaświecić się i zgasnąć.
Specyfikacje elementów WS2812B
Aby stworzyć systemy oświetleniowe oparte na taśmie adresowej, musisz znać ważne parametry elementów emitujących światło.
| Wymiary LED | 5x5mm |
| Częstotliwość modulacji PWM | 400 Hz |
| Pobór prądu przy maksymalnej jasności | 60 mA na komórkę |
| Napięcie zasilania | 5 woltów |
Arduino i WS2812B
Popularna na świecie platforma Arduino umożliwia tworzenie szkiców (programów) do zarządzania taśmami adresowymi. Możliwości systemu są wystarczająco szerokie, ale jeśli już na jakimś poziomie nie wystarczą, nabyte umiejętności wystarczą, aby bezboleśnie przejść na C++ lub nawet na asembler. Chociaż początkowa wiedza jest łatwiejsza do zdobycia na Arduino.
Podłączanie wstążki WS2812B do Arduino Uno (Nano)
W pierwszym etapie wystarczą proste płytki Arduino Uno lub Arduino Nano. W przyszłości bardziej złożone tablice mogą służyć do budowy bardziej złożonych systemów. Podczas fizycznego podłączania adresowalnej taśmy LED do płytki Arduino należy przestrzegać kilku warunków:
- ze względu na niską odporność na zakłócenia, przewody łączące linię danych powinny być jak najkrótsze (należy starać się wykonać je w granicach 10 cm);
- należy podłączyć przewód danych do wolnego wyjścia cyfrowego płytki Arduino - zostanie on wtedy określony programowo;
- ze względu na duży pobór prądu nie ma konieczności zasilania taśmy z płytki - do tego celu przewidziano osobne zasilacze.
Wspólny przewód zasilający lampy i Arduino musi być podłączony.

Podstawy sterowania programem WS2812B
Wspomniano już, że do sterowania mikroukładami WS2812B konieczne jest generowanie impulsów o określonej długości przy zachowaniu wysokiej dokładności. Istnieją polecenia w języku Arduino do tworzenia krótkich impulsów opóźnienieMikrosekund oraz mikro. Problem w tym, że rozdzielczość tych poleceń wynosi 4 mikrosekundy. Oznacza to, że tworzenie opóźnień czasowych z określoną dokładnością nie będzie działać. Konieczne jest przejście na narzędzia C++ lub Assembler. A sterowanie adresowalnym paskiem LED można zorganizować za pomocą Arduino za pomocą specjalnie do tego stworzonych bibliotek. Możesz rozpocząć swoją znajomość z programem Blink, który sprawia, że elementy świecące migają.
szybko prowadził
Ta biblioteka jest uniwersalna. Oprócz taśmy adresowej obsługuje różne urządzenia, w tym taśmy sterowane przez interfejs SPI. Posiada szerokie możliwości.
Po pierwsze, należy uwzględnić bibliotekę. Odbywa się to przed blokiem konfiguracji, a linia wygląda tak:
#zawiera <FastLED.h>
Następnym krokiem jest stworzenie tablicy do przechowywania kolorów każdej diody elektroluminescencyjnej. Będzie miał pasek nazwy i wymiar 15 - według liczby elementów (lepiej przypisać temu parametrowi stałą).
pasek CRGB[15]
W bloku konfiguracji musisz określić, z którą taśmą będzie współpracować szkic:
pusta konfiguracja () {
FastLED.addLeds< WS2812B, 7, RGB>(pasek, 15);
intg;
}
Parametr RGB określa kolejność sekwencji kolorów, 15 oznacza liczbę diod, 7 to numer wyjścia przeznaczonego do sterowania (lepiej też przypisać stałą do ostatniego parametru).
Blok pętli rozpoczyna się pętlą, która sekwencyjnie zapisuje do każdej sekcji tablicy Red (czerwona poświata):
dla (g=0; g< 15; g++)
{pasek[g]=CRGB::Czerwony;}
Następnie uformowana tablica jest wysyłana do lampy:
FastLED.show();
Opóźnienie 1000 milisekund (sekundy):
opóźnienie (1000);
Następnie możesz wyłączyć wszystkie elementy w ten sam sposób, pisząc w nich kolor czarny.
dla (int g=0; g< 15; g++)
{pasek[g]=CRGB::Czarny;}
FastLED.show();
opóźnienie (1000);

Po skompilowaniu i przesłaniu szkicu taśma będzie migać z okresem 2 sekund. Jeśli musisz zarządzać każdym składnikiem koloru osobno, zamiast linii {pasek[g]=CRGB::Czerwony;} stosuje się kilka linii:
{
pasek[g].r=100;// ustaw poziom blasku czerwonego elementu
pasek[g].g=11;// to samo dla zielonego
pasek[g].b=250;// to samo dla niebieskiego
}
NeoPixel
Ta biblioteka działa tylko z pierścieniami LED NeoPixel Ring, ale wymaga mniej zasobów i zawiera tylko niezbędne elementy. W języku Arduino program wygląda tak:
#include <Adafruit_NeoPixel.h>
Podobnie jak w poprzednim przypadku, biblioteka jest podłączona, a obiekt lenta jest deklarowany:
Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// gdzie 15 to liczba elementów, a 6 to przypisane wyjście
W bloku instalacyjnym taśma jest inicjowana:
pusta konfiguracja () {
lenta.początek()
}
W bloku pętli wszystkie elementy są podświetlone na czerwono, zmienna jest przekazywana do kanału i tworzone jest opóźnienie 1 sekundy:
dla (int y=0; y<15; y++)// 15 - liczba elementów w lampie
{lenta.setPixelColor(y, lenta.Color(255,0,0))};
taśma.pokaż();
opóźnienie (1000);
Blask zatrzymuje się wraz z czarnym zapisem:
dla (int y=0; y< 15; y++)
{ lenta.setPixelColor(y, lenta.Color(0,0,0))};
taśma.pokaż();
opóźnienie (1000);

Samouczek wideo: Próbki efektów wizualnych przy użyciu taśm adresowych.
Gdy nauczysz się migać diodami LED, możesz kontynuować naukę tworzenia efektów kolorystycznych, w tym popularnych Rainbow i Aurora Borealis z płynnymi przejściami. Adresowalne diody LED WS2812B i Arduino dają w tym celu niemal nieograniczone możliwości.
