lamp.housecope.com
Zadní

Jak připojit adresovatelný LED pásek WS2812B k Arduinu

Zveřejněno: 02.08.2021
0
2578

Vývoj osvětlovací techniky na bázi LED rychle pokračuje. Ještě včera se jako zázrakem jevily ovladačem ovládané RGB pásky, jejichž jas a barvu lze upravovat pomocí dálkového ovladače. Dnes se na trhu objevily lampy s ještě více funkcemi.

LED pásek na bázi WS2812B

Rozdíl mezi adresovatelným LED páskem a standardním RGB věc je jas a poměr barev každého prvku se nastavují samostatně. To umožňuje získat světelné efekty, které jsou pro jiné typy osvětlovacích zařízení zásadně nedostupné. Záře adresovatelného LED pásku je řízena známým způsobem – pomocí pulzně šířkové modulace. Charakteristickým rysem systému je vybavení každé LED s vlastním PWM regulátorem. Čip WS2812B je tříbarevná světelná dioda a řídicí obvod sdružené v jednom pouzdru.

Jak připojit adresovatelný LED pásek WS2812B k Arduinu
Vzhled LED s ovladačem.

Prvky jsou paralelně sloučeny do napájecí pásky a jsou ovládány přes sériovou sběrnici - výstup prvního prvku je připojen k řídicímu vstupu druhého atd. Ve většině případů jsou sériové sběrnice postaveny na dvou linkách, z nichž jedna přenáší stroboskopy (hodinové impulsy) a druhá - data.

Vzhled adresního pruhu.
Vzhled adresního pruhu.

Řídicí sběrnici čipu WS2812B tvoří jedna linka - přes ni jsou přenášena data. Data jsou kódována jako pulzy konstantní frekvence, ale s různými pracovními cykly. Jeden puls - jeden bit. Doba trvání každého bitu je 1,25 µs, nulový bit se skládá z vysoké úrovně s dobou trvání 0,4 µs a nízké úrovně 0,85 µs. Jednotka vypadá jako vysoká úroveň pro 0,8 µs a nízká úroveň pro 0,45 µs. Do každé LED je odeslán 24bitový (3bajtový) burst, po kterém následuje nízkoúrovňová pauza po dobu 50 µs. To znamená, že data budou přenášena pro další LED a tak dále pro všechny prvky řetězce. Přenos dat končí pauzou 100 µs. To znamená, že programovací cyklus pásky je dokončen a lze odeslat další sadu datových paketů.

Data pro správu adresní pásky.
Data pro správu adresní pásky.

Takový protokol umožňuje vystačit si s jednou linkou pro přenos dat, ale vyžaduje přesnost při dodržení časových intervalů. Nesoulad je povolen ne větší než 150 ns. Navíc odolnost takové sběrnice proti rušení je velmi nízká. Jakékoli rušení dostatečné amplitudy může být regulátorem vnímáno jako data. To ukládá omezení délky vodičů z řídicího obvodu. Na druhou stranu to umožňuje kontrola stavu stuhy bez přídavných zařízení.Pokud připojíte napájení k lampě a dotknete se prstem kontaktní plošky řídicí sběrnice, některé LED se mohou náhodně rozsvítit a zhasnout.

Specifikace prvků WS2812B

Chcete-li vytvořit osvětlovací systémy založené na adresní pásce, musíte znát důležité parametry prvků vyzařujících světlo.

Rozměry LED5x5 mm
Frekvence modulace PWM400 Hz
Spotřeba proudu při maximálním jasu60 mA na článek
Napájecí napětí5 voltů

Arduino a WS2812B

Ve světě oblíbená platforma Arduino umožňuje vytvářet náčrty (programy) pro správu adresních pásek. Možnosti systému jsou dostatečně široké, ale pokud už na nějaké úrovni nestačí, nabyté dovednosti postačí na bezbolestný přechod do C ++ nebo dokonce do assembleru. I když počáteční znalosti se na Arduinu snáze dostanou.

Připojení WS2812B Ribbon k Arduino Uno (Nano)

V první fázi stačí jednoduché desky Arduino Uno nebo Arduino Nano. V budoucnu mohou být složitější desky použity pro stavbu složitějších systémů. Při fyzickém připojení adresovatelného LED pásku k desce Arduino je třeba dodržet několik podmínek:

  • z důvodu nízké odolnosti proti rušení by měly být připojovací vodiče datové linky co nejkratší (měli byste se snažit, aby byly do 10 cm);
  • potřebujete připojit datový vodič k volnému digitálnímu výstupu desky Arduino - poté bude specifikován programově;
  • z důvodu vysoké spotřeby není nutné pásek napájet z desky - pro tento účel jsou k dispozici samostatné zdroje.

Společný napájecí vodič lampy a Arduina musí být propojen.

Schéma zapojení WS2812B.
Schéma připojení pásky WS2812B.

Přečtěte si také

Jak připojit LED k desce Arduino

 

Základy ovládání programu WS2812B

Již bylo zmíněno, že pro řízení mikroobvodů WS2812B je nutné generovat impulsy s určitou délkou při zachování vysoké přesnosti. V jazyce Arduino existují příkazy pro tvorbu krátkých pulzů zpožděníMikrosekundy a mikros. Problém je, že rozlišení těchto příkazů je 4 mikrosekundy. To znamená, že nebude fungovat vytváření časových zpoždění s danou přesností. Je nutné přejít na nástroje C++ nebo Assembler. A můžete organizovat ovládání adresovatelného LED pásku přes Arduino pomocí knihoven speciálně vytvořených pro toto. Své seznámení můžete zahájit s programem Blink, díky kterému budou blikat prvky vyzařující světlo.

rychle vedl

Tato knihovna je univerzální. Kromě adresní pásky podporuje řadu zařízení, včetně pásek ovládaných rozhraním SPI. Má široké možnosti.

Nejprve musí být zahrnuta knihovna. To se provádí před blokem nastavení a řádek vypadá takto:

#include <FastLED.h>

Dalším krokem je vytvoření pole pro uložení barev každé světelné diody. Bude mít název pásek a rozměr 15 - podle počtu prvků (je lepší tomuto parametru přiřadit konstantu).

CRGB pásek[15]

V bloku nastavení musíte určit, se kterou páskou bude skica fungovat:

void setup() {

FastLED.addLeds< WS2812B, 7, RGB>(pásek, 15);

intg;

}

Parametr RGB nastavuje pořadí barev, 15 znamená počet LED, 7 je číslo výstupu přiřazeného k ovládání (také je lepší přiřadit konstantu poslednímu parametru).

Blok smyčky začíná smyčkou, která postupně zapisuje do každé části pole červená (červená záře):

pro (g=0; g< 15; g++)

{strip[g]=CRGB::Red;}

Dále je vytvořené pole odesláno do lampy:

FastLED.show();

Zpoždění 1000 milisekund (sekunda):

zpoždění(1000);

Poté můžete stejným způsobem vypnout všechny prvky tak, že do nich napíšete černou barvu.

pro (int g=0; g< 15; g++)

{strip[g]=CRGB::Black;}

FastLED.show();

zpoždění(1000);

Náčrt pro blikající pásku založenou na FastLed.
Náčrt pro blikající pásku založenou na FastLed.

Po sestavení a nahrání náčrtu bude páska blikat s periodou 2 sekund. Pokud potřebujete spravovat každou barevnou složku samostatně, pak místo čáry {strip[g]=CRGB::Red;} používá se několik řádků:

{

strip[g].r=100;// nastavte úroveň záře červeného prvku

strip[g].g=11;// to samé pro zelenou

strip[g].b=250;// to samé pro modrou

}

NeoPixel

Tato knihovna funguje pouze s LED kroužky NeoPixel Ring, ale je méně náročná na zdroje a obsahuje jen to nejnutnější. V jazyce Arduino vypadá program takto:

#include <Adafruit_NeoPixel.h>

Stejně jako v předchozím případě je knihovna připojena a objekt lenta je deklarován:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// kde 15 je počet prvků a 6 je přiřazený výstup

V bloku nastavení je páska inicializována:

void setup() {

lenta.begin()

}

V bloku smyčky jsou všechny prvky zvýrazněny červeně, proměnná je předána feedu a je vytvořeno zpoždění 1 sekundy:

for (int y=0; y<15; y++)// 15 - počet prvků v lampě

{lenta.setPixelColor(y, lenta.Color(255,0,0))};

tape.show();

zpoždění(1000);

Záře se zastaví s černým záznamem:

pro (int y=0; y< 15; y++)

{ lenta.setPixelColor(y, lenta.Color(0,0,0))};

tape.show();

zpoždění(1000);

Skica pro program Blink založený na NeoPixel.
Skica pro program Blink založený na NeoPixel.

Video tutoriál: Ukázky vizuálních efektů pomocí adresních pásek.

Jakmile se naučíte blikat LED diodami, můžete pokračovat v učení, jak vytvářet barevné efekty, včetně populárních Rainbow a Aurora Borealis s plynulými přechody. Adresovatelné LED WS2812B a Arduino k tomu poskytují téměř neomezené možnosti.

komentáře:
Zatím zde nejsou žádné komentáře. Buďte první!

Doporučujeme číst

Jak opravit LED lampu sami