Kako povezati naslovni LED trak WS2812B na Arduino
Razvoj svetlobne tehnologije, ki temelji na LED diodah, se hitro nadaljuje. Še včeraj so se RGB trakovi, ki jih krmili krmilnik, katerih svetlost in barvo lahko prilagajamo z daljinskim upravljalnikom, zdeli kot čudež. Danes so se na trgu pojavile svetilke s še več lastnostmi.
LED trak na osnovi WS2812B
Razlika med naslovnim LED trakom in standardnim RGB stvar je svetlost in barvno razmerje vsakega elementa se prilagajata posebej. To vam omogoča, da dobite svetlobne učinke, ki so v osnovi nedostopni za druge vrste svetlobnih naprav. Sijaj naslovljivega LED traku se uravnava na znan način – s pomočjo impulzno-širinske modulacije. Značilnost sistema je, da vsako LED opremi z lastnim PWM krmilnikom. Čip WS2812B je tribarvna svetleča dioda in krmilno vezje, združeno v enem samem paketu.

Elementi so vzporedno združeni v napajalni trak, krmiljeni pa so preko serijskega vodila - izhod prvega elementa je povezan s krmilnim vhodom drugega itd. V večini primerov so serijska vodila zgrajena na dveh linijah, od katerih ena prenaša strobe (urne impulze), druga pa podatke.

Krmilno vodilo čipa WS2812B je sestavljeno iz ene linije - preko nje se prenašajo podatki. Podatki so kodirani kot impulzi s konstantno frekvenco, vendar z različnimi delovnimi cikli. En impulz - en bit. Trajanje vsakega bita je 1,25 µs, ničelni bit je sestavljen iz visoke ravni s trajanjem 0,4 µs in nizke ravni 0,85 µs. Enota je videti kot visoka raven za 0,8 µs in nizka raven za 0,45 µs. Vsaki LED diodi se pošlje 24-bitni (3-bajtni) izbruh, ki mu sledi nizkonivojski premor za 50 µs. To pomeni, da se bodo podatki posredovali za naslednjo LED in tako naprej za vse elemente verige. Prenos podatkov se konča s premorom 100 µs. To pomeni, da je cikel programiranja traku končan in da je mogoče poslati naslednji niz podatkovnih paketov.

Tak protokol omogoča obvladovanje ene linije za prenos podatkov, vendar zahteva natančnost pri vzdrževanju časovnih intervalov. Razlika je dovoljena največ 150 ns. Poleg tega je odpornost proti hrupu takšnega avtobusa zelo nizka. Vsako motnjo zadostne amplitude lahko krmilnik zazna kot podatke. To nalaga omejitve glede dolžine prevodnikov iz krmilnega vezja. Po drugi strani pa to omogoča pregled zdravstvenega stanja traku brez dodatnih naprav.Če napolnite žarnico in se s prstom dotaknete kontaktne ploščice krmilnega vodila, lahko nekatere LED diode naključno zasvetijo in ugasnejo.
Specifikacije elementov WS2812B
Če želite ustvariti sisteme razsvetljave na podlagi naslovnega traku, morate poznati pomembne parametre elementov, ki oddajajo svetlobo.
| LED dimenzije | 5x5 mm |
| Frekvenca PWM modulacije | 400 Hz |
| Poraba toka pri največji svetlosti | 60 mA na celico |
| Napajalna napetost | 5 voltov |
Arduino in WS2812B
Platforma Arduino, priljubljena v svetu, vam omogoča ustvarjanje skic (programov) za upravljanje naslovnih trakov. Zmogljivosti sistema so dovolj široke, a če na neki ravni ne bodo več dovolj, bodo pridobljene veščine dovolj za neboleč prehod na C ++ ali celo na asembler. Čeprav je začetno znanje lažje pridobiti na Arduinu.
Priključitev traku WS2812B na Arduino Uno (Nano)
Na prvi stopnji so dovolj preproste plošče Arduino Uno ali Arduino Nano. V prihodnosti se lahko bolj zapletene plošče uporabljajo za gradnjo kompleksnejših sistemov. Pri fizičnem povezovanju naslovljivega LED traku na ploščo Arduino je treba upoštevati več pogojev:
- zaradi nizke odpornosti proti hrupu morajo biti povezovalni vodniki podatkovne linije čim krajši (poskusite jih narediti znotraj 10 cm);
- podatkovni vodnik morate priključiti na prosti digitalni izhod plošče Arduino - nato bo določen programsko;
- zaradi velike porabe energije traku ni treba napajati s plošče - za ta namen so predvideni ločeni napajalniki.
Skupna napajalna žica žarnice in Arduino mora biti povezana.

Osnove programskega nadzora WS2812B
Omenjeno je bilo že, da je za nadzor mikrovezij WS2812B potrebno generirati impulze z določeno dolžino, pri čemer je treba ohraniti visoko natančnost. Obstajajo ukazi v jeziku Arduino za oblikovanje kratkih impulzov zakasnitev mikrosekund in mikros. Težava je v tem, da je ločljivost teh ukazov 4 mikrosekunde. To pomeni, da ne bo delovalo oblikovati časovne zamude z dano natančnostjo. Potrebno je preklopiti na orodja C ++ ali Assembler. In lahko organizirate nadzor naslovljivega LED traku prek Arduina z uporabo knjižnic, ki so bile posebej ustvarjene za to. Spoznavanje lahko začnete s programom Blink, pri katerem utripajo svetlobni elementi.
hitra led
Ta knjižnica je univerzalna. Poleg naslovnega traku podpira različne naprave, vključno s trakovi, ki jih nadzoruje vmesnik SPI. Ima široke možnosti.
Najprej je treba vključiti knjižnico. To se naredi pred blokom nastavitve in vrstica izgleda takole:
#include <FastLED.h>
Naslednji korak je ustvariti niz za shranjevanje barv vsake svetleče diode. Imel bo trak z imenom in dimenzijo 15 - po številu elementov (temu parametru je bolje dodeliti konstanto).
CRGB trak[15]
V bloku za nastavitev morate določiti, s katerim trakom bo skica delovala:
void setup() {
FastLED.addLeds< WS2812B, 7, RGB> (trak, 15);
intg;
}
Parameter RGB določa vrstni red barvnega zaporedja, 15 pomeni število LED, 7 je številka izhoda, ki je dodeljen za krmiljenje (prav tako je bolje, da zadnjem parametru dodelite konstanto).
Blok zanke se začne z zanko, ki zaporedno piše v vsak odsek matrike Rdeča (rdeča sij):
za (g=0; g< 15; g++)
{strip[g]=CRGB::Rdeča;}
Nato se oblikovana matrika pošlje v svetilko:
FastLED.show();
Zakasnitev 1000 milisekund (sekunda):
zamuda (1000);
Nato lahko vse elemente izklopite na enak način, tako da vanje napišete črno.
za (int g=0; g< 15; g++)
{trak[g]=CRGB::Črna;}
FastLED.show();
zamuda (1000);

Po prevajanju in nalaganju skice bo trak utripal 2 sekundi. Če morate upravljati vsako barvno komponento posebej, namesto črte {strip[g]=CRGB::Rdeča;} uporablja se več vrstic:
{
trak [g].r=100;// nastavite stopnjo sijaja rdečega elementa
trak [g].g=11;// enako za zeleno
trak [g].b=250;// enako za modro
}
NeoPixel
Ta knjižnica deluje samo z LED obroči NeoPixel Ring, vendar je manj intenzivna in vsebuje samo bistvene elemente. V jeziku Arduino je program videti takole:
#include <Adafruit_NeoPixel.h>
Kot v prejšnjem primeru je knjižnica povezana in objekt lenta je deklariran:
Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// kjer je 15 število elementov in 6 dodeljeni izhod
V bloku za nastavitev se trak inicializira:
void setup() {
lenta.begin()
}
V bloku zanke so vsi elementi označeni z rdečo, spremenljivka se prenese v vir in ustvari se zamik 1 sekunde:
za (int y=0; y<15; y++)// 15 - število elementov v svetilki
{lenta.setPixelColor(y, lenta.Color(255,0,0))};
trak.show();
zamuda (1000);
Sijaj se ustavi s črnim zapisom:
za (int y=0; y< 15; y++)
{ lenta.setPixelColor(y, lenta.Color(0,0,0))};
trak.show();
zamuda (1000);

Video vadnica: Vzorci vizualnih učinkov z naslovnimi trakovi.
Ko se naučite utripati LED diode, se lahko nadaljujete z učenjem ustvarjanja barvnih učinkov, vključno s priljubljeno mavrico in auroro borealis z gladkimi prehodi. Naslovljive LED diode WS2812B in Arduino ponujajo skoraj neomejene možnosti za to.
