Sådan tilsluttes den adresserbare LED-strimmel WS2812B til Arduino
Udviklingen af lysteknologi baseret på LED'er fortsætter hurtigt. Netop i går virkede controller-kontrollerede RGB-bånd, hvis lysstyrke og farve kan justeres ved hjælp af en fjernbetjening, som et mirakel. I dag er der kommet lamper med endnu flere funktioner på markedet.
LED strip baseret på WS2812B
Forskellen mellem den adresserbare LED-strimmel og den standard RGB ting er lysstyrke og farveforhold for hvert element justeres separat. Dette giver dig mulighed for at få lyseffekter, der er fundamentalt utilgængelige for andre typer lysenheder. Gløden af den adresserbare LED-strimmel styres på en kendt måde - ved hjælp af pulsbreddemodulation. En funktion ved systemet er at udstyre hver LED med sin egen PWM-controller. WS2812B-chippen er en trefarvet lysemitterende diode og et kontrolkredsløb kombineret i en enkelt pakke.

Elementerne kombineres til et strømbånd parallelt og styres via en seriel bus - det første elements udgang er forbundet med det andet elements styreindgang osv. I de fleste tilfælde er serielle busser bygget på to linjer, hvoraf den ene sender strober (urimpulser), og den anden - data.

Styrebussen til WS2812B-chippen består af en linje - data overføres gennem den. Dataene er kodet som impulser med konstant frekvens, men med forskellige driftscyklusser. En puls - en smule. Varigheden af hver bit er 1,25 µs, nulbitten består af et højt niveau med en varighed på 0,4 µs og et lavt niveau på 0,85 µs. Enheden ligner et højt niveau i 0,8 µs og et lavt niveau i 0,45 µs. En 24-bit (3-byte) burst sendes til hver LED, efterfulgt af en pause på lavt niveau i 50 µs. Det betyder, at data vil blive transmitteret til den næste LED, og så videre for alle elementer i kæden. Dataoverførslen afsluttes med en pause på 100 µs. Dette indikerer, at båndprogrammeringscyklussen er afsluttet, og det næste sæt datapakker kan sendes.

En sådan protokol gør det muligt at klare sig med én linje til datatransmission, men kræver nøjagtighed i at opretholde tidsintervaller. Afvigelsen tillades ikke mere end 150 ns. Derudover er støjimmuniteten for en sådan bus meget lav. Enhver interferens med tilstrækkelig amplitude kan af controlleren opfattes som data. Dette pålægger begrænsninger på længden af ledere fra styrekredsløbet. På den anden side gør dette det muligt bånd sundhedstjek uden yderligere enheder.Hvis du tilslutter strøm til lampen og rører ved kontaktpuden på kontrolbussen med din finger, kan nogle lysdioder lyse tilfældigt og slukke.
Specifikationer for WS2812B-elementer
For at skabe belysningssystemer baseret på et adressebånd skal du kende de vigtige parametre for lysemitterende elementer.
| LED dimensioner | 5x5 mm |
| PWM-modulationsfrekvens | 400 Hz |
| Strømforbrug ved maksimal lysstyrke | 60 mA pr. celle |
| Forsyningsspænding | 5 volt |
Arduino og WS2812B
Arduino-platformen, som er populær i verden, giver dig mulighed for at lave skitser (programmer) til håndtering af adressebånd. Systemets muligheder er brede nok, men hvis de ikke længere er nok på et eller andet niveau, vil de erhvervede færdigheder være nok til smertefrit at skifte til C++ eller endda til assembler. Selvom den indledende viden er lettere at få på Arduino.
Tilslutning af WS2812B Ribbon til Arduino Uno (Nano)
I første fase er simple Arduino Uno eller Arduino Nano boards nok. I fremtiden kan mere komplekse tavler bruges til at bygge mere komplekse systemer. Ved fysisk tilslutning af den adresserbare LED-strimmel til Arduino-kortet skal flere betingelser overholdes:
- på grund af lav støjimmunitet skal forbindelseslederne til datalinjen være så korte som muligt (du skal prøve at lave dem inden for 10 cm);
- du skal tilslutte datalederen til den frie digitale udgang på Arduino-kortet - det vil så blive specificeret programmatisk;
- på grund af højt strømforbrug er det ikke nødvendigt at forsyne båndet fra kortet - separate strømforsyninger leveres til dette formål.
Lampens og Arduinos fælles strømledning skal tilsluttes.

WS2812B Grundlæggende programkontrol
Det er allerede blevet nævnt, at for at styre WS2812B-mikrokredsløbene er det nødvendigt at generere impulser med en vis længde, der opretholder høj nøjagtighed. Der er kommandoer i Arduino-sproget til dannelse af korte pulser forsinkelse Mikrosekunder og mikros. Problemet er, at opløsningen af disse kommandoer er 4 mikrosekunder. Det vil sige, at det ikke vil virke at danne tidsforsinkelser med en given nøjagtighed. Det er nødvendigt at skifte til C++ eller Assembler-værktøjer. Og du kan organisere styringen af den adresserbare LED-strimmel gennem Arduino ved hjælp af biblioteker, der er specielt oprettet til dette. Du kan starte dit bekendtskab med Blink-programmet, som får de lysemitterende elementer til at blinke.
hurtig led
Dette bibliotek er universelt. Ud over adressebåndet understøtter det en række forskellige enheder, inklusive bånd styret af SPI-grænsefladen. Det har brede muligheder.
Først skal biblioteket med. Dette gøres før opsætningsblokken, og linjen ser således ud:
#include <FastLED.h>
Det næste trin er at skabe et array til at gemme farverne på hver lysdiode. Det vil have navnestrimlen og dimensionen 15 - med antallet af elementer (det er bedre at tildele en konstant til denne parameter).
CRGB-strimmel[15]
I opsætningsblokken skal du angive, hvilket bånd skitsen skal arbejde med:
void setup() {
FastLED.addLeds< WS2812B, 7, RGB>(strip, 15);
intg;
}
RGB-parameteren indstiller farvesekvensrækkefølgen, 15 betyder antallet af LED'er, 7 er nummeret på udgangen, der er tildelt til kontrol (det er også bedre at tildele en konstant til den sidste parameter).
Løkkeblokken begynder med en løkke, der sekventielt skriver til hver sektion af arrayet Rød (rød glød):
for (g=0; g<15; g++)
{strip[g]=CRGB::Red;}
Derefter sendes det dannede array til lampen:
FastLED.show();
Forsinkelse 1000 millisekunder (sekund):
forsinkelse(1000);
Så kan du slå alle elementer fra på samme måde ved at skrive sort i dem.
for (int g=0; g<15; g++)
{strip[g]=CRGB::Sort;}
FastLED.show();
forsinkelse(1000);

Efter kompilering og upload af skitsen vil båndet blinke med en periode på 2 sekunder. Hvis du skal administrere hver farvekomponent separat, så i stedet for linjen {strip[g]=CRGB::Red;} flere linjer bruges:
{
strimmel[g].r=100;// indstille glødniveauet for det røde element
strimmel[g].g=11;// det samme for grønt
strimmel[g].b=250;// samme for blå
}
NeoPixel
Dette bibliotek fungerer kun med NeoPixel Ring LED-ringe, men det er mindre ressourcekrævende og indeholder kun det væsentlige. På Arduino-sprog ser programmet sådan ud:
#include <Adafruit_NeoPixel.h>
Som i det foregående tilfælde er biblioteket forbundet, og lenta-objektet erklæres:
Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// hvor 15 er antallet af elementer og 6 er det tildelte output
I opsætningsblokken initialiseres båndet:
void setup() {
lenta.begin()
}
I sløjfeblokken er alle elementer fremhævet med rødt, variablen sendes til feedet, og der oprettes en forsinkelse på 1 sekund:
for (int y=0; y<15; y++)// 15 - antallet af elementer i lampen
{lenta.setPixelColor(y, lenta.Color(255,0,0))};
tape.show();
forsinkelse(1000);
Gløden stopper med en sort plade:
for (int y=0; y< 15; y++)
{ lenta.setPixelColor(y, lenta.Color(0,0,0))};
tape.show();
forsinkelse(1000);

Videotutorial: Prøver af visuelle effekter ved hjælp af adressebånd.
Når du har lært, hvordan du blinker LED'erne, kan du fortsætte med at lære, hvordan du skaber farveeffekter, inklusive de populære Rainbow og Aurora Borealis med jævne overgange. Adresserbare LED'er WS2812B og Arduino giver næsten ubegrænsede muligheder for dette.
