lamp.housecope.com
Atpakaļ

Kā savienot adresējamu LED lenti WS2812B ar Arduino

Publicēts: 02.08.2021
0
2578

Uz gaismas diodēm balstītas apgaismojuma tehnoloģiju attīstība turpinās strauji. Vēl vakar kā brīnums šķita ar kontrolieri vadāmās RGB lentes, kuru spilgtumu un krāsu var regulēt, izmantojot pulti. Šodien tirgū ir parādījušās lampas ar vēl vairāk funkcijām.

LED sloksne, kuras pamatā ir WS2812B

Atšķirība starp adresējamo LED lenti un standarta RGB lieta ir katra elementa spilgtums un krāsu attiecība tiek regulēta atsevišķi. Tas ļauj iegūt apgaismojuma efektus, kas būtībā nav pieejami cita veida apgaismes ierīcēm. Adresējamās LED lentes spīdums tiek kontrolēts zināmā veidā - izmantojot impulsa platuma modulāciju. Sistēmas iezīme ir aprīkot katru LED ar savu PWM kontrolieri. WS2812B mikroshēma ir trīskrāsu gaismas diode un vadības ķēde, kas apvienota vienā iepakojumā.

Kā savienot adresējamu LED lenti WS2812B ar Arduino
LED izskats ar draiveri.

Elementi tiek apvienoti barošanas lentē paralēli, un tiek vadīti caur seriālo kopni - pirmā elementa izeja ir savienota ar otrā vadības ieeju utt. Vairumā gadījumu seriālās kopnes ir veidotas uz divām līnijām, no kurām viena pārraida strobus (pulksteņa impulsus), bet otra - datus.

Adreses joslas izskats.
Adreses joslas izskats.

WS2812B mikroshēmas vadības kopne sastāv no vienas līnijas - pa to tiek pārsūtīti dati. Dati tiek kodēti kā impulsi ar nemainīgu frekvenci, bet ar dažādiem darba cikliem. Viens impulss - viens bits. Katra bita ilgums ir 1,25 µs, nulles bits sastāv no augsta līmeņa ar ilgumu 0,4 µs un zemā līmeņa 0,85 µs. Ierīce izskatās kā augsts līmenis 0,8 µs un zems līmenis 0,45 µs. Uz katru LED tiek nosūtīts 24 bitu (3 baitu) sērijveida ieraksts, kam seko zema līmeņa pauze uz 50 µs. Tas nozīmē, ka dati tiks pārsūtīti nākamajai LED un tā tālāk par visiem ķēdes elementiem. Datu pārsūtīšana beidzas ar 100 µs pauzi. Tas norāda, ka lentes programmēšanas cikls ir pabeigts un var nosūtīt nākamo datu pakešu komplektu.

Dati, lai pārvaldītu adreses lenti.
Dati, lai pārvaldītu adreses lenti.

Šāds protokols ļauj iztikt ar vienu datu pārraides līniju, bet prasa precizitāti laika intervālu uzturēšanā. Neatbilstība ir pieļaujama ne vairāk kā 150 ns. Turklāt šāda autobusa trokšņu imunitāte ir ļoti zema. Jebkurus pietiekamas amplitūdas traucējumus kontrolieris var uztvert kā datus. Tas nosaka ierobežojumus vadības ķēdes vadītāju garumam. No otras puses, tas padara to iespējamu lentes veselības pārbaude bez papildu ierīcēm.Ja pieslēdzat lampai strāvu un ar pirkstu pieskarsities vadības kopnes kontaktu paliktnim, dažas gaismas diodes var nejauši iedegties un nodzist.

WS2812B elementu specifikācijas

Lai izveidotu apgaismojuma sistēmas, kuru pamatā ir adreses lente, ir jāzina svarīgie gaismu izstarojošo elementu parametri.

LED izmēri5x5 mm
PWM modulācijas frekvence400 Hz
Pašreizējais patēriņš pie maksimālā spilgtuma60 mA uz vienu šūnu
Barošanas spriegums5 volti

Arduino un WS2812B

Pasaulē populārā Arduino platforma ļauj izveidot skices (programmas) adrešu lentu pārvaldīšanai. Sistēmas iespējas ir pietiekami plašas, taču, ja kādā līmenī ar tām vairs nepietiek, ar iegūtajām prasmēm pietiks, lai nesāpīgi pārslēgtos uz C++ vai pat uz assembler. Lai gan sākotnējās zināšanas ir vieglāk iegūt Arduino.

WS2812B lentes pievienošana Arduino Uno (Nano)

Pirmajā posmā pietiek ar vienkāršiem Arduino Uno vai Arduino Nano dēļiem. Nākotnē sarežģītākas plāksnes var izmantot sarežģītāku sistēmu izveidei. Fiziski pievienojot adresējamo LED lenti Arduino platei, jāievēro vairāki nosacījumi:

  • zemās trokšņu noturības dēļ datu līnijas savienojošajiem vadītājiem jābūt pēc iespējas īsākiem (jāmēģina tos izveidot 10 cm robežās);
  • jums ir jāpievieno datu vadītājs ar Arduino plates bezmaksas digitālo izvadi - pēc tam tas tiks norādīts programmatiski;
  • lielā elektroenerģijas patēriņa dēļ nav nepieciešams barot lenti no plates - šim nolūkam ir paredzēti atsevišķi barošanas avoti.

Jāpievieno lampas un Arduino kopējais strāvas vads.

Elektroinstalācijas shēma WS2812B.
WS2812B lentes savienojuma shēma.

Izlasi arī

Kā savienot LED ar Arduino plati

 

WS2812B programmas vadības pamati

Jau minēts, ka WS2812B mikroshēmu vadīšanai nepieciešams ģenerēt impulsus ar noteiktu garumu, saglabājot augstu precizitāti. Arduino valodā ir komandas īsu impulsu veidošanai kavēšanās Mikrosekundes un mikros. Problēma ir tā, ka šo komandu izšķirtspēja ir 4 mikrosekundes. Tas nozīmē, ka laika aizkaves veidošana ar noteiktu precizitāti nedarbosies. Ir nepieciešams pārslēgties uz C ++ vai Assembler rīkiem. Un jūs varat organizēt adresējamās LED lentes vadību, izmantojot Arduino, izmantojot bibliotēkas, kas īpaši izveidotas šim nolūkam. Iepazīšanos varat sākt ar programmu Blink, kas liek mirgot gaismu izstarojošajiem elementiem.

ātri led

Šī bibliotēka ir universāla. Papildus adrešu lentei tā atbalsta dažādas ierīces, tostarp lentes, kuras kontrolē SPI interfeiss. Tam ir plašas iespējas.

Pirmkārt, ir jāiekļauj bibliotēka. Tas tiek darīts pirms iestatīšanas bloka, un rinda izskatās šādi:

#include <FastLED.h>

Nākamais solis ir izveidot masīvu, lai saglabātu katras gaismas diodes krāsas. Tam būs nosaukuma josla un izmērs 15 - pēc elementu skaita (šim parametram labāk piešķirt konstanti).

CRGB sloksne[15]

Iestatīšanas blokā jānorāda, ar kuru lenti skice darbosies:

void setup() {

FastLED.addLeds< WS2812B, 7, RGB> (josla, 15);

intg;

}

RGB parametrs nosaka krāsu secības secību, 15 nozīmē gaismas diožu skaitu, 7 ir vadībai piešķirtās izejas numurs (pēdējam parametram arī labāk piešķirt konstanti).

Cilpas bloks sākas ar cilpu, kas secīgi raksta katrā masīva sadaļā Red (sarkans mirdzums):

priekš (g=0; g< 15; g++)

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

Pēc tam izveidotais masīvs tiek nosūtīts uz lampu:

FastLED.show();

Aizkave 1000 milisekundes (sekunde):

kavēšanās (1000);

Tad jūs varat izslēgt visus elementus tādā pašā veidā, ierakstot tajos melnu.

priekš (int g=0; g< 15; g++)

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

FastLED.show();

kavēšanās (1000);

Skice mirgojošai lentei, kuras pamatā ir FastLed.
Skice mirgojošai lentei, kuras pamatā ir FastLed.

Pēc skices sastādīšanas un augšupielādes lente mirgos ar 2 sekunžu periodu. Ja jums ir nepieciešams pārvaldīt katru krāsu komponentu atsevišķi, tad līnijas vietā {strip[g]=CRGB::Sarkans;} tiek izmantotas vairākas rindas:

{

strip[g].r=100;// iestatiet sarkanā elementa spīduma līmeni

sloksne[g].g=11;// tas pats zaļajam

sloksne[g].b=250;// tas pats zilajam

}

NeoPixel

Šī bibliotēka darbojas tikai ar NeoPixel Ring LED gredzeniem, taču tā ir mazāk resursietilpīga un satur tikai būtisko. Arduino valodā programma izskatās šādi:

#include <Adafruit_NeoPixel.h>

Tāpat kā iepriekšējā gadījumā, bibliotēka ir savienota un Lenta objekts tiek deklarēts:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// kur 15 ir elementu skaits un 6 ir piešķirtā izvade

Iestatīšanas blokā lente tiek inicializēta:

void setup() {

lenta.begin()

}

Cilpas blokā visi elementi ir iezīmēti sarkanā krāsā, mainīgais tiek nodots plūsmai un tiek izveidota 1 sekundes aizkave:

for (int y=0; y<15; y++)// 15 - elementu skaits lukturī

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

lente.show();

kavēšanās (1000);

Mirdzums apstājas ar melnu ierakstu:

priekš (int y=0; y< 15; y++)

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

lente.show();

kavēšanās (1000);

Skice programmai Blink, kuras pamatā ir NeoPixel.
Skice programmai Blink, kuras pamatā ir NeoPixel.

Video pamācība: Vizuālo efektu paraugi, izmantojot adrešu lentes.

Kad esat iemācījušies mirgot gaismas diodes, varat turpināt mācīties, kā izveidot krāsu efektus, tostarp populāros Rainbow un Aurora Borealis ar vienmērīgām pārejām. Adrešu gaismas diodes WS2812B un Arduino nodrošina gandrīz neierobežotas iespējas tam.

Komentāri:
Komentāru vēl nav. Esi pirmais!

Mēs iesakām izlasīt

Kā pats salabot LED lampu