Paano ikonekta ang addressable LED strip WS2812B sa Arduino
Ang pag-unlad ng teknolohiya ng pag-iilaw batay sa mga LED ay nagpapatuloy nang mabilis. Kahapon lang, tila isang himala ang mga RGB ribbon na kontrolado ng controller, na ang liwanag at kulay ay maaaring i-adjust gamit ang remote control. Ngayon, ang mga lamp na may higit pang mga tampok ay lumitaw sa merkado.
LED strip batay sa WS2812B
Ang pagkakaiba sa pagitan ng addressable LED strip at ang standard RGB bagay ay ang ratio ng liwanag at kulay ng bawat elemento ay hiwalay na inaayos. Nagbibigay-daan ito sa iyo na makakuha ng mga epekto sa pag-iilaw na sa panimula ay hindi naa-access sa iba pang mga uri ng mga aparato sa pag-iilaw. Ang glow ng addressable LED strip ay kinokontrol sa isang kilalang paraan - gamit ang pulse-width modulation. Ang isang tampok ng system ay upang bigyan ang bawat LED ng sarili nitong PWM controller. Ang WS2812B chip ay isang tri-color light emitting diode at isang control circuit na pinagsama sa isang pakete.

Ang mga elemento ay pinagsama sa isang power tape na kahanay, at kinokontrol sa pamamagitan ng isang serial bus - ang output ng unang elemento ay konektado sa control input ng pangalawa, atbp. Sa karamihan ng mga kaso, ang mga serial bus ay itinayo sa dalawang linya, ang isa ay nagpapadala ng mga strobe (pulso ng orasan), at ang isa pa - data.

Ang control bus ng WS2812B chip ay binubuo ng isang linya - ang data ay ipinadala sa pamamagitan nito. Ang data ay naka-encode bilang mga pulso ng pare-pareho ang dalas, ngunit may iba't ibang mga siklo ng tungkulin. Isang pulso - isang bit. Ang tagal ng bawat bit ay 1.25 µs, ang zero bit ay binubuo ng isang mataas na antas na may tagal na 0.4 µs at isang mababang antas na 0.85 µs. Ang unit ay mukhang isang mataas na antas para sa 0.8 µs at isang mababang antas para sa 0.45 µs. Ang isang 24-bit (3-byte) na pagsabog ay ipinapadala sa bawat LED, na sinusundan ng isang mababang antas na pag-pause para sa 50 µs. Nangangahulugan ito na ang data ay ipapadala para sa susunod na LED, at iba pa para sa lahat ng elemento ng chain. Ang paglipat ng data ay nagtatapos sa isang pause na 100 µs. Ito ay nagpapahiwatig na ang tape programming cycle ay kumpleto na at ang susunod na hanay ng mga data packet ay maaaring ipadala.

Ang ganitong protocol ay ginagawang posible na makadaan sa isang linya para sa paghahatid ng data, ngunit nangangailangan ng katumpakan sa pagpapanatili ng mga agwat ng oras. Ang pagkakaiba ay pinapayagan nang hindi hihigit sa 150 ns. Bilang karagdagan, ang kaligtasan sa ingay ng naturang bus ay napakababa. Ang anumang interference ng sapat na amplitude ay maaaring maramdaman ng controller bilang data. Nagpapataw ito ng mga paghihigpit sa haba ng mga konduktor mula sa control circuit. Sa kabilang banda, ginagawa nitong posible ribbon health check nang walang karagdagang mga aparato.Kung lagyan mo ng kuryente ang lampara at hinawakan ang contact pad ng control bus gamit ang iyong daliri, maaaring random na umilaw ang ilang LED at mawala.
Mga pagtutukoy ng mga elemento ng WS2812B
Upang lumikha ng mga sistema ng pag-iilaw batay sa isang address tape, kailangan mong malaman ang mahahalagang parameter ng mga elemento ng light emitting.
| Mga sukat ng LED | 5x5mm |
| PWM modulasyon dalas | 400 Hz |
| Kasalukuyang pagkonsumo sa maximum na liwanag | 60 mA bawat cell |
| Supply boltahe | 5 volts |
Arduino at WS2812B
Ang platform ng Arduino, na sikat sa mundo, ay nagbibigay-daan sa iyo na lumikha ng mga sketch (mga programa) para sa pamamahala ng mga address tape. Ang mga kakayahan ng system ay sapat na malawak, ngunit kung ang mga ito ay hindi na sapat sa ilang antas, ang nakuhang mga kasanayan ay magiging sapat upang walang sakit na lumipat sa C ++ o kahit sa assembler. Kahit na ang paunang kaalaman ay mas madaling makuha sa Arduino.
Pagkonekta ng WS2812B Ribbon sa Arduino Uno (Nano)
Sa unang yugto, sapat na ang mga simpleng Arduino Uno o Arduino Nano board. Sa hinaharap, ang mas kumplikadong mga board ay maaaring gamitin upang bumuo ng mas kumplikadong mga sistema. Kapag pisikal na ikinonekta ang naa-address na LED strip sa Arduino board, maraming kundisyon ang dapat sundin:
- dahil sa mababang kaligtasan sa ingay, ang mga konduktor ng pagkonekta ng linya ng data ay dapat na maikli hangga't maaari (dapat mong subukang gawin ang mga ito sa loob ng 10 cm);
- kailangan mong ikonekta ang konduktor ng data sa libreng digital na output ng Arduino board - ito ay tutukuyin sa programmatically;
- dahil sa mataas na pagkonsumo ng kuryente, hindi kinakailangan na paganahin ang tape mula sa board - hiwalay na mga power supply ay ibinigay para sa layuning ito.
Ang karaniwang power wire ng lamp at Arduino ay dapat na konektado.

Mga Pangunahing Kaalaman sa Kontrol ng Programa ng WS2812B
Nabanggit na na upang makontrol ang WS2812B microcircuits, kinakailangan upang makabuo ng mga pulso na may isang tiyak na haba, na nagpapanatili ng mataas na katumpakan. Mayroong mga utos sa wikang Arduino para sa pagbuo ng mga maikling pulso delayMicroseconds at micros. Ang problema ay ang resolution ng mga command na ito ay 4 microseconds. Iyon ay, hindi ito gagana upang bumuo ng mga pagkaantala sa oras na may ibinigay na katumpakan. Kinakailangang lumipat sa C ++ o Assembler tool. At maaari mong ayusin ang kontrol ng addressable LED strip sa pamamagitan ng Arduino gamit ang mga aklatan na espesyal na nilikha para dito. Maaari mong simulan ang iyong kakilala sa programang Blink, na ginagawang kumukurap ang mga elementong naglalabas ng liwanag.
mabilis na humantong
Ang library na ito ay unibersal. Bilang karagdagan sa address tape, sinusuportahan nito ang iba't ibang mga device, kabilang ang mga tape na kinokontrol ng interface ng SPI. Ito ay may malawak na posibilidad.
Una, dapat isama ang library. Ginagawa ito bago ang setup block, at ganito ang hitsura ng linya:
#include <FastLED.h>
Ang susunod na hakbang ay lumikha ng isang array upang iimbak ang mga kulay ng bawat light emitting diode. Magkakaroon ito ng strip ng pangalan at dimensyon 15 - sa pamamagitan ng bilang ng mga elemento (mas mahusay na magtalaga ng isang pare-pareho sa parameter na ito).
CRGB strip[15]
Sa setup block, kailangan mong tukuyin kung aling tape ang gagana sa sketch:
void setup() {
FastLED.addLeds< WS2812B, 7, RGB>(strip, 15);
intg;
}
Ang RGB parameter ay nagtatakda ng pagkakasunud-sunod ng pagkakasunud-sunod ng kulay, 15 ay nangangahulugang ang bilang ng mga LED, 7 ay ang bilang ng output na itinalaga para sa kontrol (mas mahusay din na magtalaga ng isang pare-pareho sa huling parameter).
Ang loop block ay nagsisimula sa isang loop na sunud-sunod na nagsusulat sa bawat seksyon ng array na Pula (pulang glow):
para sa (g=0; g< 15; g++)
{strip[g]=CRGB::Red;}
Susunod, ang nabuong array ay ipinadala sa lampara:
FastLED.show();
Pagkaantala ng 1000 millisecond (segundo):
pagkaantala(1000);
Pagkatapos ay maaari mong i-off ang lahat ng mga elemento sa parehong paraan sa pamamagitan ng pagsusulat ng itim sa mga ito.
para sa (int g=0; g< 15; g++)
{strip[g]=CRGB::Black;}
FastLED.show();
pagkaantala(1000);

Pagkatapos i-compile at i-upload ang sketch, magki-flash ang tape sa loob ng 2 segundo. Kung kailangan mong pamahalaan ang bawat bahagi ng kulay nang hiwalay, pagkatapos ay sa halip na linya {strip[g]=CRGB::Red;} ilang linya ang ginagamit:
{
strip[g].r=100;// itakda ang antas ng glow ng pulang elemento
strip[g].g=11;// pareho para sa berde
strip[g].b=250;// pareho para sa asul
}
NeoPixel
Gumagana lang ang library na ito sa mga NeoPixel Ring LED rings, ngunit hindi gaanong resource intensive at naglalaman lamang ng mga mahahalagang bagay. Sa wikang Arduino, ganito ang hitsura ng programa:
#include <Adafruit_NeoPixel.h>
Tulad ng sa nakaraang kaso, ang library ay konektado, at ang lenta object ay ipinahayag:
Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// kung saan 15 ang bilang ng mga elemento at 6 ang nakatalagang output
Sa setup block, ang tape ay sinisimulan:
void setup() {
lenta.begin()
}
Sa loop block, ang lahat ng mga elemento ay naka-highlight sa pula, ang variable ay ipinapasa sa feed, at isang pagkaantala ng 1 segundo ay nilikha:
para sa (int y=0; y<15; y++)// 15 - ang bilang ng mga elemento sa lampara
{lenta.setPixelColor(y, lenta.Color(255,0,0))};
tape.show();
pagkaantala(1000);
Huminto ang glow na may itim na rekord:
para sa (int y=0; y< 15; y++)
{ lenta.setPixelColor(y, lenta.Color(0,0,0))};
tape.show();
pagkaantala(1000);

Video tutorial: Mga sample ng visual effects gamit ang mga address tape.
Kapag natutunan mo na kung paano i-flash ang mga LED, maaari mong ipagpatuloy ang pag-aaral kung paano gumawa ng mga color effect, kabilang ang sikat na Rainbow at Aurora Borealis na may maayos na mga transition. Ang mga addressable na LED na WS2812B at Arduino ay nagbibigay ng halos walang limitasyong mga posibilidad para dito.
