lamp.housecope.com
Tilbage

Sådan tilsluttes den adresserbare LED-strimmel WS2812B til Arduino

Udgivet: 02.08.2021
0
2578

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.

Sådan tilsluttes den adresserbare LED-strimmel WS2812B til Arduino
Udseendet af LED'en med driveren.

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.

Udseende af adressestrimlen.
Udseende af adressestrimlen.

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.

Data til at administrere adressebåndet.
Data til at administrere adressebåndet.

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 dimensioner5x5 mm
PWM-modulationsfrekvens400 Hz
Strømforbrug ved maksimal lysstyrke60 mA pr. celle
Forsyningsspænding5 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.

Ledningsdiagram WS2812B.
WS2812B båndforbindelsesdiagram.

Læs også

Sådan tilsluttes LED til Arduino-kort

 

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);

En skitse til et blinkende bånd baseret på FastLed.
En skitse til et blinkende bånd baseret på FastLed.

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);

Skitse til Blink-programmet baseret på NeoPixel.
Skitse til Blink-programmet baseret på NeoPixel.

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.

Kommentarer:
Der er ingen kommentarer endnu. Vær den første!

Vi råder dig til at læse

Sådan reparerer du selv LED-lampe