Ogólne

Sterowanie RGB WS2812b za pomocą pilota IR

Pinterest LinkedIn Tumblr

arduino-irDzisiejszy artykuł będzie kontynuacją wpisu związanego z układem WS2812b. Chciałem Wam przedstawić krok po kroku, jak w prosty sposób zbudować sterowanie RGB WS2812b za pomocą pilota IR. Nauczymy się pisać własne funkcje oraz wykorzystamy instrukcję switch. Funkcje są głównym narzędziem służącym do tworzenia przejrzystych szkiców, które można łatwo modyfikować bez ryzyka uszkodzenia całej aplikacji. Po przeczytaniu wpisu, może ktoś z Was zdecyduje się zrobić oświetlenie świąteczne, wykorzystując możliwości Arduino i diod z układem WS2812b. Zapraszam do dalszej lektury.

Dla przypomnienia, listwa Arduino NEOPIXEL WS2812B to moduł 8×1 znaków zgodny z bibliotekami Adafriut NEOPIXEL. Każda dioda RGB na module może zostać włączona indywidualnie na dowolny kolor. Jedna dioda posiada 3X PWM 8bit. Pobór prądu dla jednej diody to około 18 mA. Listwę można zakupić w serwisie allegro oraz w sklepie botland.com.pl Ceny zaczynają się od 13zł za pasek.

Aby wykonać projekt potrzebujemy:

  • Arduino UNO
  • pasek LED RGB WS2812B
  • Odbiornik podczerwieni TSOP31236 (lub podobny)
  • Dowolny pilot z diodą IR
  • płytka stykowa, przewody

Wykorzystane biblioteki:

Funkcje układu:

  • zmiana kolorów za pomocą pilota
  • 6 kolorów do wyboru (możliwość dołożenia dodatkowych)
  • kolory: zielony, czerwony, niebieski, żółty, biały, fioletowy
  • przycisk wyłączenia OFF

 

Sterowanie RGB WS2812b

IMG_20151206_140909

 

układ sterowanie RGB WS2812b

Zasada działania:

Wciskając przycisk na pilocie wysyłamy odpowiednie sygnały IR. Odbiornik podczerwieni odbiera sygnały z pilota. Następnie, instrukcja switch sprawdza czy dany przycisk jest przypisany do odpowiedniej funkcji. Każda funkcja to inny kolor. Jeżeli instrukcja switch odnalazła kod (np.: 0xFD00FF) odpowiadający naszej funkcji – następuje zmiana koloru.

 

Zaczynamy!

Po zbudowaniu układu, musimy odczytać jakie sygnały wysyła nasz pilot. Do tego wykorzystamy prosty sketch, który ma za zadanie odebrać i wyświetlić w monitorze portu szeregowego odpowiednie wartości.

Po wgraniu szkicu, uruchamiamy monitor portu szeregowego, wybierając z menu Narzędzia-> Monitor portu szeregowego. Po skierowaniu pilota w stronę odbiornika i wciśnięciu dowolnego przycisku, powinny się wyświetlać odpowiednie wartości. Warto zapisać, które wartości odpowiadają konkretnym przyciskom, gdyż łatwiej nam później będzie przypisać przycisk do odpowiedniej funkcji. Ja zapisałem sobie przyciski od 1 do 6 oraz przycisk OFF. Te przyciski będę wykorzystywał do sterowania listwą. Przyciski od 1 do 6 to konkretne kolory, natomiast przycisk OFF wyłącza listwę.

monitor portu szeregowego

Funkcje w Arduino

Funkcja odgrywa rolę małego programu występującego w pisanym przez nas większym programie. W funkcji można zawrzeć pojedyncze czynności, które chcemy wykonać. Zdefiniowana
funkcja może być użyta w dowolnym miejscu szkicu, zawiera własne zmienne i własną listę poleceń. Gdy polecenia zawarte w funkcji zostaną wykonane, program powraca do miejsca w szkicu, gdzie znajdował się kod wywołujący funkcję, a następnie wykonywane są kolejne polecenia.

Przykład (Arduino dla początkujących – podstawy i szkice Simon Monk)

Tak naprawdę jedyne, co zrobiliśmy, to przeniesienie kodu powodującego błyskanie diody LED ze środka pętli for do oddzielnej funkcji o nazwie flash. Teraz możesz spowodować dowolną liczbę błysków, wywołując nową funkcję przy użyciu polecenia flash(). Zwróć uwagę na puste nawiasy umieszczone bezpośrednio za nazwą funkcji. Oznaczają one, że funkcja nie pobiera żadnych parametrów. Wartość opóźnienia jest określana przez funkcję delayPeriod, która była zastosowana wcześniej.

 

Instrukcja switch

Instrukcja switch zwana jest także instrukcją wyboru. Działa ona w ten sposób, że wybiera spośród dostępnego zbioru określoną wartość na podstawie wartości pewnego wyrażenia i wykonuje zdefiniowany dla niej kod.

 

Opis sketch:

Na samym początku podpinamy wcześniej wymienione biblioteki oraz definiujemy użyte piny. Uruchamiamy biblioteki odpowiedzialne za listwę oraz odbiornik IR.  Następnie przechodzimy do instrukcji switch, która sprawdza, czy w odebranych danych (results.value) znajduje się któryś z naszych kodów. Jeżeli instrukcja znajdzie odpowiedni, kod uruchamia zdefiniowaną funkcję. Każda funkcja to inny kolor. Kolor definiujemy za pomocą składowej (R,G,B) wartościami od 0 do 255. Np. kolor niebieski posiada wartość  (o,0,255). Do generowaniem kolorów przyda nam się paleta RGBAby dodać kolejne kolory tworzymy nową funkcję, nadajemy jej nazwę oraz ustawiamy odpowiedni kolor. Pamiętamy, aby dodać do instrukcji switch odpowiedni case dla konkretnego przycisku.

 

Zakończenie

Mam nadzieję że artykuł jest zrozumiały. Życzę Wam miłego majsterkowania i jak zwykle, pozostaję do Waszej dyspozycji w przypadku problemów czy pytań.