એડ્રેસેબલ LED સ્ટ્રીપ WS2812B ને Arduino થી કેવી રીતે કનેક્ટ કરવું
LEDs પર આધારિત લાઇટિંગ ટેકનોલોજીનો વિકાસ ઝડપથી ચાલુ રહે છે. ગઈકાલે જ, નિયંત્રક-નિયંત્રિત RGB રિબન્સ, જેની તેજસ્વીતા અને રંગ રિમોટ કંટ્રોલનો ઉપયોગ કરીને ગોઠવી શકાય છે, તે એક ચમત્કાર જેવું લાગતું હતું. આજે, બજારમાં વધુ સુવિધાઓ સાથે લેમ્પ દેખાયા છે.
WS2812B પર આધારિત LED સ્ટ્રીપ
એડ્રેસેબલ LED સ્ટ્રીપ અને સ્ટાન્ડર્ડ વચ્ચેનો તફાવત આરજીબી વસ્તુ છે દરેક તત્વની તેજ અને રંગ ગુણોત્તર અલગથી ગોઠવવામાં આવે છે. આ તમને લાઇટિંગ ઇફેક્ટ્સ મેળવવા માટે પરવાનગી આપે છે જે અન્ય પ્રકારના લાઇટિંગ ઉપકરણો માટે મૂળભૂત રીતે અપ્રાપ્ય છે. એડ્રેસેબલ LED સ્ટ્રીપની ગ્લો જાણીતી રીતે નિયંત્રિત થાય છે - પલ્સ-પહોળાઈ મોડ્યુલેશનનો ઉપયોગ કરીને. સિસ્ટમની વિશેષતા એ છે કે દરેક એલઇડીને તેના પોતાના PWM નિયંત્રકથી સજ્જ કરવું. WS2812B ચિપ એ ત્રિ-રંગ પ્રકાશ ઉત્સર્જક ડાયોડ અને એક જ પેકેજમાં સંયુક્ત કંટ્રોલ સર્કિટ છે.

તત્વોને પાવર ટેપમાં સમાંતરમાં જોડવામાં આવે છે, અને સીરીયલ બસ દ્વારા નિયંત્રિત થાય છે - પ્રથમ તત્વનું આઉટપુટ બીજાના નિયંત્રણ ઇનપુટ સાથે જોડાયેલ છે, વગેરે. મોટા ભાગના કિસ્સાઓમાં, સીરીયલ બસો બે લીટીઓ પર બાંધવામાં આવે છે, જેમાંથી એક સ્ટ્રોબ (ઘડિયાળ પલ્સ) પ્રસારિત કરે છે, અને અન્ય - ડેટા.

WS2812B ચિપની કંટ્રોલ બસમાં એક લાઇન હોય છે - ડેટા તેના દ્વારા પ્રસારિત થાય છે. ડેટાને સતત આવર્તનના પલ્સ તરીકે એન્કોડ કરવામાં આવે છે, પરંતુ વિવિધ ફરજ ચક્ર સાથે. એક પલ્સ - એક બીટ. દરેક બીટનો સમયગાળો 1.25 µs છે, શૂન્ય બીટમાં 0.4 µs અને 0.85 µsના નીચા સ્તર સાથે ઉચ્ચ સ્તરનો સમાવેશ થાય છે. એકમ 0.8 µs માટે ઉચ્ચ સ્તર અને 0.45 µs માટે નિમ્ન સ્તર જેવું લાગે છે. દરેક LED પર 24-બીટ (3-બાઇટ) બર્સ્ટ મોકલવામાં આવે છે, ત્યારબાદ 50 µs માટે લો-લેવલ પોઝ આપવામાં આવે છે. આનો અર્થ એ છે કે આગામી એલઇડી માટે ડેટા ટ્રાન્સમિટ કરવામાં આવશે, અને તેથી જ સાંકળના તમામ ઘટકો માટે. ડેટા ટ્રાન્સફર 100 µs ના વિરામ સાથે સમાપ્ત થાય છે. આ સૂચવે છે કે ટેપ પ્રોગ્રામિંગ ચક્ર પૂર્ણ થઈ ગયું છે અને ડેટા પેકેટનો આગામી સેટ મોકલી શકાય છે.

આ પ્રકારનો પ્રોટોકોલ ડેટા ટ્રાન્સમિશન માટે એક લાઇનથી પસાર થવાનું શક્ય બનાવે છે, પરંતુ સમય અંતરાલ જાળવવા માટે ચોકસાઈની જરૂર છે. વિસંગતતાને 150 એનએસ કરતા વધુની મંજૂરી નથી. વધુમાં, આવી બસની અવાજ પ્રતિરક્ષા ખૂબ ઓછી છે. પર્યાપ્ત કંપનવિસ્તારની કોઈપણ હસ્તક્ષેપ નિયંત્રક દ્વારા ડેટા તરીકે સમજી શકાય છે. આ કંટ્રોલ સર્કિટમાંથી કંડક્ટરની લંબાઈ પર પ્રતિબંધ લાદે છે. બીજી બાજુ, આ તે શક્ય બનાવે છે રિબન આરોગ્ય તપાસ વધારાના ઉપકરણો વિના.જો તમે દીવાને પાવર લાગુ કરો છો અને તમારી આંગળી વડે કંટ્રોલ બસના કોન્ટેક્ટ પેડને સ્પર્શ કરો છો, તો કેટલાક LED અવ્યવસ્થિત રીતે પ્રકાશિત થઈ શકે છે અને બહાર જઈ શકે છે.
WS2812B તત્વોની વિશિષ્ટતાઓ
સરનામાં ટેપ પર આધારિત લાઇટિંગ સિસ્ટમ્સ બનાવવા માટે, તમારે પ્રકાશ ઉત્સર્જન તત્વોના મહત્વપૂર્ણ પરિમાણોને જાણવાની જરૂર છે.
| એલઇડી પરિમાણો | 5x5 મીમી |
| PWM મોડ્યુલેશન આવર્તન | 400 હર્ટ્ઝ |
| મહત્તમ તેજ પર વર્તમાન વપરાશ | સેલ દીઠ 60 એમએ |
| વિદ્યુત સંચાર | 5 વોલ્ટ |
Arduino અને WS2812B
Arduino પ્લેટફોર્મ, વિશ્વમાં લોકપ્રિય, તમને સરનામાં ટેપનું સંચાલન કરવા માટે સ્કેચ (પ્રોગ્રામ) બનાવવાની મંજૂરી આપે છે. સિસ્ટમની ક્ષમતાઓ પૂરતી પહોળી છે, પરંતુ જો તે હવે અમુક સ્તરે પર્યાપ્ત નથી, તો હસ્તગત કુશળતા પીડારહિત રીતે C++ અથવા એસેમ્બલર પર સ્વિચ કરવા માટે પૂરતી હશે. જોકે પ્રારંભિક જ્ઞાન Arduino પર મેળવવું સરળ છે.
WS2812B રિબનને Arduino Uno (Nano) થી કનેક્ટ કરી રહ્યું છે
પ્રથમ તબક્કે, સાદા Arduino Uno અથવા Arduino નેનો બોર્ડ પૂરતા છે. ભવિષ્યમાં, વધુ જટિલ સિસ્ટમો બનાવવા માટે વધુ જટિલ બોર્ડનો ઉપયોગ કરી શકાય છે. એડ્રેસેબલ LED સ્ટ્રીપને Arduino બોર્ડ સાથે ભૌતિક રીતે કનેક્ટ કરતી વખતે, ઘણી શરતો અવલોકન કરવી આવશ્યક છે:
- ઓછી અવાજની પ્રતિરક્ષાને લીધે, ડેટા લાઇનના કનેક્ટિંગ કંડક્ટર શક્ય તેટલા ટૂંકા હોવા જોઈએ (તમારે તેમને 10 સે.મી.ની અંદર બનાવવાનો પ્રયાસ કરવો જોઈએ);
- તમારે ડેટા કંડક્ટરને Arduino બોર્ડના ફ્રી ડિજિટલ આઉટપુટ સાથે કનેક્ટ કરવાની જરૂર છે - તે પછી પ્રોગ્રામેટિક રીતે ઉલ્લેખિત કરવામાં આવશે;
- ઉચ્ચ પાવર વપરાશને લીધે, બોર્ડમાંથી ટેપને પાવર કરવી જરૂરી નથી - આ હેતુ માટે અલગ પાવર સપ્લાય પ્રદાન કરવામાં આવે છે.
લેમ્પ અને Arduino નો સામાન્ય પાવર વાયર જોડાયેલ હોવો જોઈએ.

WS2812B પ્રોગ્રામ કંટ્રોલ બેઝિક્સ
તે પહેલાથી જ ઉલ્લેખ કરવામાં આવ્યો છે કે WS2812B માઇક્રોસર્કિટ્સને નિયંત્રિત કરવા માટે, ઉચ્ચ ચોકસાઈ જાળવી રાખીને, ચોક્કસ લંબાઈ સાથે કઠોળ પેદા કરવા જરૂરી છે. ટૂંકી કઠોળની રચના માટે Arduino ભાષામાં આદેશો છે માઇક્રોસેકન્ડનો વિલંબ અને માઇક્રો. સમસ્યા એ છે કે આ આદેશોનું રિઝોલ્યુશન 4 માઇક્રોસેકન્ડ છે. એટલે કે, આપેલ ચોકસાઈ સાથે સમય વિલંબ રચવાનું કામ કરશે નહીં. C++ અથવા એસેમ્બલર ટૂલ્સ પર સ્વિચ કરવું જરૂરી છે. અને તમે આ માટે ખાસ બનાવેલી લાઇબ્રેરીઓનો ઉપયોગ કરીને Arduino દ્વારા એડ્રેસેબલ LED સ્ટ્રીપનું નિયંત્રણ ગોઠવી શકો છો. તમે બ્લિંક પ્રોગ્રામથી તમારી ઓળખાણ શરૂ કરી શકો છો, જે પ્રકાશ-ઉત્સર્જન કરનારા તત્વોને ઝબકાવે છે.
ઝડપી આગેવાની
આ પુસ્તકાલય સાર્વત્રિક છે. સરનામાં ટેપ ઉપરાંત, તે SPI ઇન્ટરફેસ દ્વારા નિયંત્રિત ટેપ સહિત વિવિધ ઉપકરણોને સપોર્ટ કરે છે. તેની વિશાળ શક્યતાઓ છે.
પ્રથમ, પુસ્તકાલયનો સમાવેશ થવો જોઈએ. આ સેટઅપ બ્લોક પહેલા કરવામાં આવે છે, અને લીટી આના જેવી દેખાય છે:
# સમાવેશ થાય છે <FastLED.h>
આગળનું પગલું દરેક પ્રકાશ ઉત્સર્જિત ડાયોડના રંગોને સંગ્રહિત કરવા માટે એરે બનાવવાનું છે. તેમાં નામની સ્ટ્રીપ અને પરિમાણ 15 હશે - તત્વોની સંખ્યા દ્વારા (આ પરિમાણને સતત સોંપવું વધુ સારું છે).
CRGB સ્ટ્રીપ[15]
સેટઅપ બ્લોકમાં, તમારે સ્પષ્ટ કરવાની જરૂર છે કે સ્કેચ કઈ ટેપ સાથે કામ કરશે:
રદબાતલ સેટઅપ() {
FastLED.addLeds< WS2812B, 7, RGB>(સ્ટ્રીપ, 15);
intg;
}
RGB પેરામીટર કલર સિક્વન્સ ક્રમ સેટ કરે છે, 15 એટલે LED ની સંખ્યા, 7 એ નિયંત્રણ માટે અસાઇન કરેલા આઉટપુટની સંખ્યા છે (છેલ્લા પેરામીટરને સતત અસાઇન કરવાનું પણ વધુ સારું છે).
લૂપ બ્લોક લૂપથી શરૂ થાય છે જે ક્રમશઃ એરે રેડ (લાલ ગ્લો) ના દરેક વિભાગને લખે છે:
માટે (g=0; g<15; g++)
{સ્ટ્રીપ[જી]=CRGB::લાલ;}
આગળ, રચાયેલ એરે લેમ્પ પર મોકલવામાં આવે છે:
FastLED.show();
વિલંબ 1000 મિલિસેકન્ડ્સ (સેકન્ડ):
વિલંબ(1000);
પછી તમે તે જ રીતે બધા ઘટકોને કાળા લખીને બંધ કરી શકો છો.
માટે (int g=0; g<15; g++)
{સ્ટ્રીપ[જી]=CRGB::બ્લેક;}
FastLED.show();
વિલંબ(1000);

સ્કેચ કમ્પાઈલ અને અપલોડ કર્યા પછી, ટેપ 2 સેકન્ડના સમયગાળા સાથે ફ્લેશ થશે. જો તમારે દરેક રંગ ઘટકને અલગથી મેનેજ કરવાની જરૂર હોય, તો પછી લીટીને બદલે {સ્ટ્રીપ[જી]=CRGB::લાલ;} ઘણી રેખાઓનો ઉપયોગ થાય છે:
{
પટ્ટી[g].r=100;// લાલ તત્વનું ગ્લો લેવલ સેટ કરો
પટ્ટી[g].g=11;// લીલા માટે સમાન
પટ્ટી[g].b=250;// વાદળી માટે સમાન
}
NeoPixel
આ લાઇબ્રેરી માત્ર NeoPixel Ring LED રિંગ્સ સાથે જ કામ કરે છે, પરંતુ તે ઓછા સંસાધન સઘન છે અને તેમાં માત્ર આવશ્યક વસ્તુઓ છે. Arduino ભાષામાં, પ્રોગ્રામ આના જેવો દેખાય છે:
#include <Adafruit_NeoPixel.h>
અગાઉના કેસની જેમ, લાઇબ્રેરી જોડાયેલ છે, અને લેન્ટા ઑબ્જેક્ટ જાહેર કરવામાં આવે છે:
Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// જ્યાં 15 એ તત્વોની સંખ્યા છે અને 6 એ સોંપેલ આઉટપુટ છે
સેટઅપ બ્લોકમાં, ટેપ શરૂ થાય છે:
રદબાતલ સેટઅપ() {
lenta.begin()
}
લૂપ બ્લોકમાં, બધા ઘટકો લાલ રંગમાં પ્રકાશિત થાય છે, ચલ ફીડમાં પસાર થાય છે, અને 1 સેકન્ડનો વિલંબ બનાવવામાં આવે છે:
માટે (int y=0; y<15; y++)// 15 - દીવોમાં તત્વોની સંખ્યા
{lenta.setPixelColor(y, lenta.Color(255,0,0))};
tape.show();
વિલંબ(1000);
કાળા રેકોર્ડ સાથે ગ્લો અટકે છે:
માટે (int y=0; y<15; y++)
{ lenta.setPixelColor(y, lenta.Color(0,0,0))};
tape.show();
વિલંબ(1000);

વિડિયો ટ્યુટોરીયલ: એડ્રેસ ટેપનો ઉપયોગ કરીને વિઝ્યુઅલ ઈફેક્ટના નમૂનાઓ.
એકવાર તમે LED ને કેવી રીતે ફ્લેશ કરવું તે શીખી લો, પછી તમે સરળ સંક્રમણો સાથે લોકપ્રિય રેઈન્બો અને ઓરોરા બોરેલિસ સહિત કલર ઈફેક્ટ્સ કેવી રીતે બનાવવી તે શીખવાનું ચાલુ રાખી શકો છો. એડ્રેસેબલ LEDs WS2812B અને Arduino આ માટે લગભગ અમર્યાદિત શક્યતાઓ પૂરી પાડે છે.
