Kako spojiti adresabilnu LED traku WS2812B na Arduino
Razvoj tehnologije rasvjete temeljene na LED diodama nastavlja se ubrzano. Još jučer su se RGB vrpce upravljane kontrolerom, čija se svjetlina i boja mogu podešavati pomoću daljinskog upravljača, činile kao čudo. Danas su se na tržištu pojavile svjetiljke s još više značajki.
LED traka bazirana na WS2812B
Razlika između adresabilne LED trake i standardne RGB stvar je u tome svjetlina i omjer boja svakog elementa posebno se podešavaju. To vam omogućuje da dobijete svjetlosne efekte koji su u osnovi nedostupni drugim vrstama rasvjetnih uređaja. Sjaj adresabilne LED trake kontrolira se na poznat način - pulsno-širinskom modulacijom. Značajka sustava je opremanje svake LED diode vlastitim PWM kontrolerom. Čip WS2812B je trobojna svjetlosna dioda i upravljački krug kombinirani u jednom paketu.

Elementi se spajaju u napojnu traku paralelno, a upravljaju se preko serijske sabirnice - izlaz prvog elementa spojen je na upravljački ulaz drugog, itd. U većini slučajeva, serijske sabirnice su izgrađene na dvije linije, od kojih jedna prenosi strobe (impulse sata), a druga - podatke.

Upravljačka sabirnica čipa WS2812B sastoji se od jedne linije - preko nje se prenose podaci. Podaci su kodirani kao impulsi konstantne frekvencije, ali s različitim radnim ciklusima. Jedan puls - jedan bit. Trajanje svakog bita je 1,25 µs, nulti bit se sastoji od visoke razine s trajanjem od 0,4 µs i niske razine od 0,85 µs. Jedinica izgleda kao visoka razina za 0,8 µs i niska razina za 0,45 µs. 24-bitni (3-bajtni) raf se šalje svakoj LED diodi, nakon čega slijedi pauza niske razine od 50 µs. To znači da će se podaci prenositi za sljedeću LED diodu i tako dalje za sve elemente lanca. Prijenos podataka završava pauzom od 100 µs. To znači da je ciklus programiranja trake završen i da se može poslati sljedeći skup paketa podataka.

Takav protokol omogućuje snalaženje s jednom linijom za prijenos podataka, ali zahtijeva točnost u održavanju vremenskih intervala. Nepodudarnost je dopuštena ne više od 150 ns. Osim toga, otpornost na buku takvog autobusa je vrlo niska. Bilo koje smetnje dovoljne amplitude kontroler može percipirati kao podatak. To nameće ograničenja na duljinu vodiča iz upravljačkog kruga. S druge strane, to omogućuje provjera zdravlja vrpce bez dodatnih uređaja.Ako uključite žarulju i dodirnete kontaktnu ploču kontrolne sabirnice prstom, neke LED diode mogu nasumično zasvijetliti i ugasiti se.
Specifikacije elemenata WS2812B
Da biste stvorili sustave rasvjete na temelju adresne trake, morate znati važne parametre elemenata koji emitiraju svjetlost.
| LED dimenzije | 5x5 mm |
| Frekvencija PWM modulacije | 400 Hz |
| Potrošnja struje pri maksimalnoj svjetlini | 60 mA po ćeliji |
| Napon napajanja | 5 volti |
Arduino i WS2812B
Arduino platforma, popularna u svijetu, omogućuje kreiranje skica (programa) za upravljanje adresnim trakama. Mogućnosti sustava su dovoljno široke, ali ako više nisu dovoljne na nekoj razini, stečene vještine bit će dovoljne za bezbolan prijelaz na C ++ ili čak na asembler. Iako je početno znanje lakše dobiti na Arduinu.
Povezivanje WS2812B vrpce na Arduino Uno (Nano)
U prvoj fazi dovoljne su jednostavne Arduino Uno ili Arduino Nano ploče. U budućnosti se složenije ploče mogu koristiti za izgradnju složenijih sustava. Prilikom fizičkog spajanja adresabilne LED trake na Arduino ploču, potrebno je poštivati nekoliko uvjeta:
- zbog niske otpornosti na buku, spojni vodiči podatkovne linije trebaju biti što kraći (trebate ih pokušati napraviti unutar 10 cm);
- morate spojiti podatkovni vodič na slobodni digitalni izlaz Arduino ploče - tada će se programski odrediti;
- zbog velike potrošnje energije nije potrebno napajati traku s ploče - za tu namjenu predviđena su odvojena napajanja.
Zajednička žica za napajanje svjetiljke i Arduino mora biti spojena.

WS2812B Osnove upravljanja programom
Već je spomenuto da je za upravljanje mikro krugovima WS2812B potrebno generirati impulse određene duljine, održavajući visoku točnost. Postoje naredbe na jeziku Arduino za formiranje kratkih impulsa kašnjenje mikrosekunde i mikros. Problem je što je razlučivost ovih naredbi 4 mikrosekunde. To jest, neće funkcionirati formiranje vremenskih kašnjenja s danom točnošću. Potrebno je prijeći na C++ ili Assembler alate. I možete organizirati kontrolu adresabilne LED trake kroz Arduino pomoću knjižnica koje su posebno stvorene za to. Možete započeti svoje upoznavanje s programom Blink, koji čini da svjetlosni elementi trepere.
brzo led
Ova knjižnica je univerzalna. Osim adresne trake, podržava razne uređaje, uključujući trake koje kontrolira SPI sučelje. Ima široke mogućnosti.
Prvo, knjižnica mora biti uključena. To se radi prije bloka za postavljanje, a linija izgleda ovako:
#include <FastLED.h>
Sljedeći korak je stvaranje niza za pohranu boja svake diode koja emitira svjetlo. Imat će traku naziva i dimenziju 15 - po broju elemenata (bolje je ovom parametru dodijeliti konstantu).
CRGB traka[15]
U bloku za postavljanje morate odrediti s kojom trakom će skica raditi:
void setup() {
FastLED.addLeds< WS2812B, 7, RGB> (traka, 15);
intg;
}
Parametar RGB postavlja redoslijed boja, 15 znači broj LED dioda, 7 je broj izlaza koji je dodijeljen za kontrolu (također je bolje dodijeliti konstantu posljednjem parametru).
Blok petlje počinje petljom koja uzastopno upisuje u svaki dio niza Red (crveni sjaj):
za (g=0; g< 15; g++)
{strip[g]=CRGB::Red;}
Zatim se formirani niz šalje u svjetiljku:
FastLED.show();
Odgoda 1000 milisekundi (sekunda):
kašnjenje (1000);
Tada možete isključiti sve elemente na isti način tako da u njih upišete crno.
za (int g=0; g< 15; g++)
{strip[g]=CRGB::Crna;}
FastLED.show();
kašnjenje (1000);

Nakon sastavljanja i učitavanja skice, traka će treptati u trajanju od 2 sekunde. Ako trebate upravljati svakom komponentom boje zasebno, umjesto linije {strip[g]=CRGB::Red;} koristi se nekoliko redaka:
{
traka[g].r=100;// postavite razinu sjaja crvenog elementa
traka[g].g=11;// isto za zelenu
traka[g].b=250;// isto za plavu
}
NeoPixel
Ova biblioteka radi samo s NeoPixel Ring LED prstenovima, ali je manje intenzivna i sadrži samo najvažnije. Na jeziku Arduino program izgleda ovako:
#include <Adafruit_NeoPixel.h>
Kao iu prethodnom slučaju, biblioteka je povezana, a objekt lenta je deklariran:
Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// gdje je 15 broj elemenata, a 6 dodijeljeni izlaz
U bloku za postavljanje, traka se inicijalizira:
void setup() {
lenta.begin()
}
U bloku petlje svi elementi su označeni crvenom bojom, varijabla se prosljeđuje u feed i stvara se kašnjenje od 1 sekunde:
za (int y=0; y<15; y++)// 15 - broj elemenata u svjetiljci
{lenta.setPixelColor(y, lenta.Color(255,0,0))};
traka.show();
kašnjenje (1000);
Sjaj prestaje s crnim zapisom:
za (int y=0; y< 15; y++)
{ lenta.setPixelColor(y, lenta.Color(0,0,0))};
traka.show();
kašnjenje (1000);

Video tutorial: Uzorci vizualnih efekata pomoću adresnih traka.
Nakon što naučite kako bljeskati LED diode, možete nastaviti učiti kako stvarati efekte boja, uključujući popularne Rainbow i Aurora Borealis s glatkim prijelazima. Adresabilne LED diode WS2812B i Arduino pružaju gotovo neograničene mogućnosti za to.
