light_ws2812 – Nowa biblioteka do obsługi sterowanych szeregowo LED-ów

W Nettigo mamy dostępne LED-y RGB sterowane interfejsem szeregowym. Można za pomocą jednego cyfrowego pinu kontrolera sterować całym szeregiem takich diod i ustawiać każdej niezależnie kolor z 24 bitowej palety (17 mln barw).

image

Mamy też całą taśmę takich lampek LED. W jednym metrze mieści się ich 60. Taśma jest w osłonie wodoodpornej.

image

Myślę, że to fajny element zestawu majsterkowicza DIY do przyozdobienia domu lub choinki na święta z własnym niepowtarzalnym schematem świecenia.

Piszę o nich ponownie, gdyż pojawiła się nowa lepsza biblioteka do sterowania tymi lampkami. Nazywa się “light_ws2812” i dostępna jest w serwisie Github.

Biblioteka obsługuje procesory ARM, ATtiny oraz platformę Arduino.

Oto przykład jej zastosowania na platformie Arduino:

#include <WS2812.h>

WS2812 LED(1);
	
cRGB color;

void setup() {
  LED.setOutput(9);
}

void loop() {
  color.r = 255;
  color.g = 0;
  color.b = 0;
  LED.set_crgb_at(0, color);
  LED.sync();
  delay(500);
  
  color.r = 0;
  color.g = 255;
  color.b = 0;
  LED.set_crgb_at(0, color);
  LED.sync();
  delay(500);
  
  color.r = 0;
  color.g = 0;
  color.b = 255;
  LED.set_crgb_at(0, color);
  LED.sync();
  delay(500);
}

Na początku trzeba ustawić bibliotekę sterującą światełkami poprzez dyrektywę include:

#include <WS2812.h>

Potem tworzę obiekt o nazwie LED odpowiedzialny za sterowanie diodami:

WS2812 LED(1);

Jego pierwszy argument określa ilość LED-ów podłączonych w szeregu do wybranego pinu. Nadałem mu wartość 1 bo podłączyłem jedną diodę. 

Następnie tworzę zmienną o nazwie color typu cRGB:

cRGB color;

Służy ona do przechowywania wartości koloru składającej się z 3 barw podstawowych R – Red [czerwony], G – Green [zielony] i B- Blue [niebieski].

W funkcji setup za pomocą metody “setOutput” [ustaw wyjście] ustawiam pin do którego podłączyłem diody.

LED.setOutput(9);

Wybrałem pin cyfrowy 9.

W funkcji loop określiłem animację świecenia lampki. Polega ona na tym, że co pół sekundy zmienia się kolor pierwszej lampki na jeden z 3 podstawowych kolorów w pełnej jasności.

Najpierw ustawiam jasności poszczególnych składowych kolorów w zmiennej color:

color.r = 0;
color.g = 255;
color.b = 0;

W tym przypadku ustawiłem wartość g na 255, co daje maksymalną jasność dla koloru zielonego, natomiast inne składowe otrzymały najniższą wartość czyli 0. Możesz stosować dowolne kombinacje kolorów ustawiając odpowiednie wartości składowych jako liczby od 0 do 255.

Potem przypisuje ustawiony kolor do wybranej diody za pomocą metody “set_crgb_at”.

LED.set_crgb_at(0, color);

Jego pierwszy argument to numer diody w szeregu, której chcesz ustawić kolor. Drugim argumentem jest wartość koloru przechowywana w zmiennej color.

By wysłać dane o kolorze do lampki, trzeba użyć metody “sync”.

LED.sync();

I to tyle. Możesz teraz tworzyć własne unikalne animacje świetlne w prosty sposób.

O tym jak podłączyć diody do Arduino dowiesz się ze starszego wpisu:

Bibliotekę możesz ściągnąć z serwisu Github:

Diody w dwóch wersjach jak i wodoodporną taśmę kupisz w Nettigo.

sprae