RGB šviesos diodai, skirti arduino uno. RGB šviesos diodai: kaip jie veikia, vidinės dalys, kaip prijungti, RGB LED ir Arduino. Surinkite grandinę ant duonos lentos

Arduino idealiai tinka valdyti bet kokį įrenginį. ATmega mikroprocesorius naudoja eskizų programą, skirtą daugybei atskirų kaiščių, A / D I / O ir PWM valdiklių valdyti.

Dėl kodo lankstumo mikrovaldiklis ATmega plačiai naudojamas įvairios automatikos moduliuose, įskaitant jo pagrindu galima sukurti valdiklį LED apšvietimui valdyti.

Krovinio valdymo per Arduino principas

Arduino plokštė turi dviejų tipų išvesties prievadus: skaitmeninį ir analoginį (PWM valdiklis). Skaitmeninis prievadas turi dvi būsenas – loginį nulį ir loginį vieną. Jei prie jo prijungsite šviesos diodą, jis arba švies, arba ne.

Analoginis išėjimas yra PWM valdiklis, į kurį tiekiamas maždaug 500 Hz dažnio signalas su reguliuojamu darbo ciklu. Kas yra PWM valdiklis ir kaip jis veikia, galima rasti internete. Per analoginį prievadą galima ne tik įjungti ir išjungti apkrovą, bet ir keisti joje esančią įtampą (srovę).

Komandų sintaksė

Skaitmeninė išvestis:

pinMode (12, OUTPUT);- nustatyti 12 prievadą kaip duomenų išvesties prievadą;
digitalWrite (12, AUKŠTAS);- diskrečiam išėjimui 12 taikome loginį bloką, apšviečiantį šviesos diodą.

Analoginė išvestis:

analogOutPin = 3;- nustatyti 3 prievadą analoginei vertei išvesti;
analogWrite (3, reikšmė);- išvestyje formuojame signalą, kurio įtampa nuo 0 iki 5V. Reikšmė yra signalo darbo ciklas nuo 0 iki 255. Kai vertė 255, didžiausia įtampa.

LED valdymo būdai per Arduino

Tiesiogiai per prievadą galima prijungti tik silpną šviesos diodą, o net ir tada geriau per ribojantį rezistorių. Bandant prijungti galingesnę apkrovą, ji bus išjungta.

Galingesnėms apkrovoms, įskaitant LED juosteles, naudojamas elektroninis jungiklis - tranzistorius.

Tranzistorių jungiklių tipai

  • dvipolis;
  • Laukas;
  • Kompozitas (Darlingtono asamblėja).
Apkrovos prijungimo būdai
Per bipolinį tranzistorių Per lauko tranzistorių Per įtampos jungiklį

Kai maitinamas aukštas logikos lygis (digitalWrite (12, AUKŠTAS);) per išvesties prievadą į tranzistoriaus pagrindą per kolektoriaus-emiterio grandinę atskaitos įtampa tekės į apkrovą. Tokiu būdu galite įjungti ir išjungti šviesos diodą.

Panašiai veikia ir lauko tranzistorius, bet kadangi jame vietoj "bazės" yra nutekėjimas, kuris valdomas ne srove, o įtampa, ribojantis rezistorius šioje grandinėje nereikalingas.

Dvipolis vaizdas neleidžia reguliuoti galingų apkrovų. Srovė per ją ribojama iki 0,1–0,3 A.

Lauko tranzistoriai veikia su galingesnėmis apkrovomis, kurių srovė yra iki 2A. Dar galingesnei apkrovai naudojami Mosfet lauko tranzistoriai, kurių srovė siekia iki 9A ir įtampa iki 60V.

Vietoj lauko efekto ULN2003, ULN2803 mikroschemose galite naudoti bipolinių tranzistorių Darlington agregatą.

Lustas ULN2003 ir elektroninio įtampos jungiklio schema:

Tranzistoriaus veikimo principas, skirtas sklandžiai valdyti LED juostą

Tranzistorius veikia kaip vandens čiaupas, tik elektronams. Kuo didesnė įtampa taikoma bipolinio tranzistoriaus pagrindui arba lauko efekto nutekėjimui, tuo mažesnė emiterio-kolektoriaus grandinės varža, tuo didesnė srovė praeina per apkrovą.

Prijungę tranzistorių prie analoginio Arduino prievado, priskirkite jam reikšmę nuo 0 iki 255, pakeiskite į kolektorių arba nutekėjimą tiekiamą įtampą nuo 0 iki 5 V. Kolektoriaus-emiterio grandinėje bus nuo 0 iki 100 % apkrovos atskaitos įtampos.

Norėdami valdyti arduino LED juostą, turite pasirinkti tinkamos galios tranzistorių. Šviesos diodų skaitiklio veikimo srovė yra 300-500 mA, šiems tikslams tinka galios dvipolis tranzistorius. Ilgesniems ilgiams reikalingas lauko tranzistorius.

LED juostos prijungimo prie arduino schema:

RGB juostos valdymas su Andurino

Be vieno lusto šviesos diodų, „Arduino“ gali dirbti su spalvotais šviesos diodais. Prijungę kiekvienos spalvos kaiščius prie analoginių Arduino išėjimų, galite savavališkai keisti kiekvieno kristalo ryškumą, pasieksite norimą švytėjimo spalvą.

Arduino RGB LED laidų schema:

„Arduino RGB“ juostos valdiklis sukurtas panašiai:

Arduino RGB valdiklį geriau montuoti ant lauko efekto tranzistorių.

Dėl sklandus ryškumo valdymas galima naudoti du mygtukus. Vienas padidins švytėjimo ryškumą, kitas sumažins.

Arduino LED juostos ryškumo valdymo eskizas

int led = 120; nustatykite vidutinį ryškumo lygį

anuliuota sąranka () (
pinMode (4, OUTPUT); 4-ąjį analoginį prievadą nustatykite į išvestį
pinMode (2, INPUT);

pinMode (4, INPUT); 2 ir 4 skaitmeninius prievadus nustatykite į įvestį, skirtą mygtukų apklausai
}
tuščioji kilpa () (

mygtukas1 = skaitmeninis skaitymas (2);

mygtukas2 = skaitmeninis skaitymas (4);
jei (button1 == AUKŠTAS) paspaudus pirmąjį mygtuką, ryškumas padidės
{
led = led + 5;

analogWrite (4, led);
}
jei (mygtukas2 == AUKŠTAS) paspaudus antrą mygtuką, ryškumas sumažės
{
led = led - 5;

analogWrite (4, led);
}

Nuspaudus pirmąjį arba antrąjį mygtuką, į elektroninio rakto valdymo kontaktą tiekiama įtampa sklandžiai keičiasi. Tada sklandžiai pasikeis ryškumas.

Arduino valdymo moduliai

Norėdami sukurti visavertę LED juostos valdymo tvarkyklę, galite naudoti jutiklių modulius.

IR valdymas

Modulis leidžia užprogramuoti iki 20 komandų.

Signalo spindulys apie 8m.

Komplekto kaina 6 USD.

Radijo kanalu

Keturių kanalų įrenginys, atstumas iki 100 m

Komplekto kaina 8 USD.

Leidžia įjungti apšvietimą net artėjant prie buto.

Bekontaktis

Atstumo jutiklis gali padidinti ir sumažinti apšvietimo ryškumą rankos judesiu.

Veikimo spindulys yra iki 5 m.

Modulio kaina yra 0,3 USD.

serialas „Išdrįsk“.

RGB reiškia kaip Red, Green, Blue santrumpa, su šiomis spalvomis galite gauti bet kokią spalvą maišydami. RGB LED yra 3 maži kristalai R, G, B, su kuriais galime susintetinti bet kokią spalvą ar atspalvį. Šioje pamokoje prie Arduino plokštės prijungsime RGB šviesos diodą ir priversime ją spindėti visomis vaivorykštės spalvomis.
Šiam projektui jums reikės išsamios informacijos, kuri yra „Basic“ ir „Learning Arduino“ rinkiniuose:

  1. Arduino Uno;
  2. USB kabelis;
  3. Prototipų kūrimo lenta;
  4. Daddy-Daddy laidai - 7 vnt;
  5. Rezistoriai 220 omų - 3 vnt;
  6. RGB LED - 1 vnt;
  7. Potenciometras.

Sujunkite grandinę, parodytą 1 paveiksle.

1 pav. Sujungimo schema

Dabar pradėkime rašyti eskizą.
RGB šviesos diodas turėtų mirgėti visomis vaivorykštės spalvomis nuo raudonos iki violetinės, tada pereiti prie raudonos ir panašiai apskritimu. Spalvų perėjimo greitis reguliuojamas potenciometru. 1 lentelėje pateikti 7 pagrindinių vaivorykštės spalvų R, G, B verčių duomenys.

1 lentelė. 7 pagrindinių vaivorykštės spalvų R, G, B verčių duomenys

Spalvų maišymui būtina tiekti visą įtampų diapazoną nuo Arduino kaiščių iki šviesos diodo R, G, B įėjimų. Tačiau „Arduino“ negali tiekti savavališkos įtampos skaitmeniniam kaiščiui. Išvedama + 5 V (HIGH) arba 0 V (LOW). PWM (Pulse Width Modulation arba PWM) naudojamas dalinei įtampai imituoti.

Tikiuosi, kad jau baigėte skyrių. 2.6 Jeremy Blum knygos Learning Arduino: Tools and Techniques for Technical Wizardry, kurioje išsamiai aprašyta impulso pločio moduliavimo mechanika.
Programos vykdymo algoritmas:

  • Padidinkite žalios G komponento vertę, kol pasieksime oranžinę reikšmę (255.125.0),
  • Padidinkite žalios G komponento reikšmę, kol pasieksime geltoną (255,255,0).
  • Sumažinkite raudonojo komponento R reikšmę iki žalios vertės (0,255,0).
  • Pradinis taškas yra raudonas (255,0,0).
  • Padidinkite mėlynos spalvos komponento B reikšmę iki žydros spalvos (0,255,255).
  • Sumažinkite žalią G reikšmę iki mėlynos vertės (0,0,255).
  • Palaipsniui didinkite raudonojo komponento R reikšmę iki purpurinės vertės (255,0,255).
  • Sumažinkite mėlynos spalvos komponento B reikšmę iki raudonos vertės (255,0,0).

Eikite į 1 veiksmą.

Po kiekvieno veiksmo pristabdome, kad pataisytume spalvotą ekraną,

Vėlavimas (VIEW_PAUSE);

patikrinkite potenciometro reikšmę ir pakeiskite spalvos pasikeitimo greičio reikšmę.

Tuščia nustatymo pauzė () (pauzė = žemėlapis (analoginis skaitymas (POT), 0,1024, MIN_PAUSE, MAX_PAUSE); Serial.print ("pause ="); Serial.println (pauzė);)

Sukurkime naują eskizą Arduino IDE, įdėkite į jį kodą iš 1 sąrašo ir įkelkite eskizą į Arduino plokštę. Primename, kad Arduino IDE nustatymuose turite pasirinkti plokštės tipą (Arduino UNO) ir plokštės prijungimo prievadą.
Sąrašas 1

Const int RAUDONA = 11; // RGB RGB LED išvesties const int GREEN = 10; // RGB šviesos diodo G išvestis const int BLUE = 9; // B RGB šviesos diodo išvestis raudona; // kintamasis, skirtas saugoti spalvos R komponentą int green; // kintamasis, skirtas saugoti spalvos G komponentą int blue; // kintamasis spalvos const B komponento saugojimui int POT = A0; // potenciometro jungties kaištis const int MIN_PAUSE = 10; // minimalus spalvos pasikeitimo delsa, ms const int MAX_PAUSE = 100; // maksimalus delsa pakeisti spalvą, ms int pause; // kintamasis, skirtas saugoti esamą delsą const int VIEW_PAUSE = 2000; // pagrindinės spalvos taisymo laikas, ms void setup () (Serial.begin (9600);) void loop () (// nuo raudonos iki geltonos Serial.println ("raudona - geltona"); raudona = 255; žalia = 0; mėlyna = 0; (žalia = 0; žalia<=255;green++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от желтому к зеленому Serial.println("yellow - green"); red=255;green=255;blue=0; for(red=255;red>= 0; raudona--) setRGB (raudona, žalia, mėlyna); nustatyti pauzę (); delsa (VIEW_PAUSE); // nuo žalios iki mėlynos Serial.println ("žalia - mėlyna"); raudona = 0; žalia = 255; mėlyna = 0; už (mėlyna = 0; mėlyna<=255;blue++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от голубого к синему Serial.println("blue - blue"); red=0;green=255;blue=255; for(green=255;green>= 0; žalia--) setRGB (raudona, žalia, mėlyna); nustatyti pauzę (); delsa (VIEW_PAUSE); // nuo mėlynos iki violetinės Serial.println ("mėlyna - violetinė"); raudona = 0; žalia = 0; mėlyna = 255; už (raudona = 0; raudona<=255;red++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от фиолетового к красному Serial.println("purple - red"); red=255;green=0;blue=255; for(blue=0;blue>= 0; mėlyna--) setRGB (raudona, žalia, mėlyna); nustatyti pauzę (); delsa (VIEW_PAUSE); ) // funkcija, skirta RGB LED spalvai nustatyti tuščiąja eiga setRGB (int r, int g, int b) (analogWrite (RED, r); analogWrite (GREEN, g); analogWrite (BLUE, b); delsa (pauzė) ;) / / funkcija, skirta nustatyti esamą delsą tuščiąja pauzė () (pauzė = žemėlapis (analogRead (POT), 0.1024, MIN_PAUSE, MAX_PAUSE); Serial.print ("pause ="); Serial.println (pauzė);)

Įkėlę eskizą stebime RGB LED spalvos pasikeitimą su vaivorykštės spalvomis, potenciometru keičiame spalvų keitimo greitį (žr. 2.3 pav.).


2.3 pav. RGB LED – visos vaivorykštės spalvos

Trispalvis LED gali spindėti visomis vaivorykštės spalvomis! Sutikite, tai daug įdomiau nei tiesiog mirksėti įprastu šviesos diodu.
Pradėkime trečią pamoką apie pažintį su Arduino.

Įrangos pajungimas:
Tiesą sakant, trijų spalvų šviesos diodas yra trys šviesos diodai (raudona, žalia ir mėlyna) vienoje pakuotėje. Kai paleidžiame jį su įvairaus ryškumo ir intensyvumo laipsniais raudonai, žaliai ir mėlynai, gauname naujų spalvų.

Šviesos diodo krašte yra mažas nuožulnus, tai yra raktas, jis nurodo raudono šviesos diodo koją, tada eina bendras, tada žalias ir mėlynas.

Prijunkite RAUDONOS šviesos diodo koją prie 330 omų rezistoriaus. Kitą rezistoriaus galą prijunkite prie Arduino prievado kaiščio9.

Prijunkite nuorodą prie GND.

Prijunkite ŽALIĄ koją prie 330 omų rezistoriaus.

Kitą rezistoriaus galą prijunkite prie Arduino prievado 10 kaiščio.

Prijunkite MĖLYNĄ koją prie 330 omų rezistoriaus.

Kitą rezistoriaus galą prijunkite prie Arduino prievado 11 kaiščio.

Toliau pateiktame paveikslėlyje parodytas duonos lentos su surinkta schema ir Arduino plokštės su laidais, ateinančiais iš duonos lentos, išdėstymas.

ArduinoKit eksperimentų rinkinys
3 eksperimento programos kodas:

Belieka atsisiųsti programą į Arduino per USB kabelį. Atsisiųskite eskizą su trečiąja LED RGB pamoka - aukščiau esančiame straipsnyje.

  • 3 220 omų rezistoriai (čia yra puikus labiausiai paplitusių rezistorių rinkinys);
  • jungiamieji laidai (rekomenduoju šį rinkinį);
  • Bandomoji Lenta;
  • asmeninis kompiuteris su Arduino IDE kūrimo aplinka.
  • 1 Skirtumas tarp RGB šviesos diodų bendras anodas ir bendras katodas

    RGB šviesos diodai yra dviejų tipų: su bendru anodu („pliusas“) ir bendras katodas („minusas“)... Paveikslėlyje parodytos šių dviejų tipų šviesos diodų schemos. Ilga LED kojelė visada yra bendras maitinimo laidas. Raudonas LED laidas (R) yra atskirai, žalias (G) ir mėlynas (B) yra kitoje bendrojo laido pusėje, kaip parodyta paveikslėlyje. Šiame straipsnyje apžvelgsime RGB šviesos diodo sujungimą su bendru anodu ir bendru katodu.

    2 RGB LED sujungimas su bendru anoduį Arduino

    RGB LED su bendru anodu sujungimo schema parodyta paveiksle. Anodą jungiame prie „+5 V“ Arduino plokštėje, kitus tris kaiščius – prie savavališkų skaitmeninių kontaktų.


    Atkreipkite dėmesį, kad kiekvieną šviesos diodą jungiame per savo rezistorių, o ne vieną bendrą. Patartina tai padaryti, nes kiekvienas iš šviesos diodų turi savo efektyvumą. Ir jei juos visus sujungsite per vieną rezistorių, šviesos diodai švytės skirtingu ryškumu.

    Norėdami greitai apskaičiuoti rezistorių, atitinkantį jūsų pasirinktą šviesos diodą, galite naudoti mūsų internetinį LED skaičiuotuvą.

    3 RGB LED valdymas naudojant arduino

    Perrašykime klasikinį eskizą mirksėti... Mes įjungsime ir išjungsime kiekvieną iš trijų spalvų paeiliui. Atminkite, kad šviesos diodas užsidegs, kai atitinkamą Arduino kaištį pritaikysime LOW.

    // nustatyti PIN numerius: const int pinR = 12; const int pinG = 10; const int pinB = 9; anuliuota sąranka () (// nustatyti kaiščio priskyrimą: pinMode (pinR, OUTPUT); pinMode (pinG, OUTPUT); pinMode (pinB, OUTPUT); } tuščioji kilpa () ( digitalWrite (pinR, LOW); // apšviečia kanalą Red delay (100); digitalWrite (pinR, HIGH); // išjungti Red delay (200); digitalWrite (pinG, LOW); // apšviečia kanalą Green delay (100); digitalWrite (pinG, HIGH); // išjungti Green delay (200); digitalWrite (pinB, LOW); // apšviečia kanalą Blue delay (100); digitalWrite (pinB, HIGH); // išjungti Blue delay (200); }

    4 Surinkite grandinę ant duonos lentos

    Pažiūrėkime, kaip veikia RGB šviesos diodas. Šviesos diodas užsidega raudonai, žaliai ir mėlynai. Kiekviena spalva užsidega 0,1 sekundės, tada užgęsta 0,2 sekundės ir įsijungia kita. Galite apšviesti kiekvieną kanalą atskirai, galite visus vienu metu, tada pasikeis švytėjimo spalva.


    RGB LED yra prijungtas prie Arduino. Grandinė surenkama ant duonos lentos

    5 į Arduino

    Jei naudojate Įprasto katodo RGB šviesos diodas tada prijunkite ilgą šviesos diodo laidą prie GND Arduino plokštės ir kanalai R, G ir B į Arduino skaitmeninius prievadus. Reikėtų prisiminti, kad šviesos diodai užsidega, kai kanalams R, G, B taikomas aukštas lygis (HIGH), priešingai nei šviesos diodas su bendru anodu.


    RGB LED su bendru katodu prijungimo schema į Arduino

    Jei nepakeisite aukščiau pateikto eskizo, kiekviena LED spalva šiuo atveju degs 0,2 sekundės, o pauzė tarp jų bus 0,1 sekundės.

    Jei norite valdyti šviesos diodo ryškumą, prijunkite RGB LED prie skaitmeninių Arduino kaiščių, turinčių PWM funkciją. Šie „Arduino“ smeigtukai paprastai yra pažymėti tilde (banguota linija), žvaigždute arba apskritimu.

    Šiame straipsnyje aptariami RGB (raudonai žaliai mėlyni) šviesos diodo naudojimo su Arduino pagrindai.

    RGB LED spalvai valdyti naudojame analogWrite funkciją.

    Iš pirmo žvilgsnio RGB šviesos diodai atrodo taip pat kaip įprasti šviesos diodai, tačiau iš tikrųjų juose yra trys šviesos diodai: vienas raudonas, vienas žalias ir taip, vienas mėlynas. Reguliuodami kiekvieno iš jų ryškumą, galite valdyti LED spalvą.

    Tai yra, mes pakoreguosime kiekvieno LED ryškumą ir išvestyje gausime norimą spalvą, tarsi tai būtų menininko paletė arba tarsi reguliuotumėte savo grotuvo dažnius. Tam galite naudoti kintamuosius rezistorius. Tačiau dėl to schema bus gana sudėtinga. Laimei, „Arduino“ mums siūlo „analogWrite“ funkciją. Jei naudosime plokštėje esančius kontaktus, pažymėtus "~" simboliu, galime reguliuoti įtampą, kuri tiekiama į atitinkamą šviesos diodą.

    Reikalingi mazgai

    Kad įgyvendintume nedidelį projektą, mums reikia:

    1 RGB LED 10mm

    3 270 Ω rezistoriai (raudonos, violetinės, rudos juostelės). Galite naudoti rezistorių, kurio varža yra iki 1 kΩ, tačiau atminkite, kad didėjant varžai, šviesos diodas pradeda šviesti ne taip ryškiai.


    Šeši skaičiaus skaitmenys atitinka tris skaičių poras; pirmoji pora yra raudona spalvos komponentė, kiti du skaitmenys yra žalioji, o paskutinė pora yra mėlyna. Tai reiškia, kad išraiška # FF0000 atitinka raudoną spalvą, nes tai bus didžiausias raudono šviesos diodo ryškumas (FF yra 255 šešioliktaine), o raudonos ir mėlynos spalvos komponentai yra lygūs 0.

    Pabandykite apšviesti šviesos diodą naudodami, pavyzdžiui, indigo atspalvį: # 4B0082.

    Raudona, žalia ir mėlyna indigo spalvos komponentai yra atitinkamai 4B, 00 ir 82. Galime juos naudoti funkcijoje „setColor“ su šia kodo eilute:

    setColor (0x4B, 0x0, 0x82); // indigo

    Trims komponentams naudojame žymėjimą, kuriame prieš kiekvieną iš jų pradžioje rašomas simbolis „0x“.

    Žaisdami su skirtingais RGB LED tonais, nepamirškite nustatyti „delsos“ po kiekvieno naudojimo.

    PWM ir Arduino

    Impulso pločio moduliavimas (PWM) yra vienas iš galios valdymo būdų. Mūsų atveju PWM naudojamas kiekvieno atskiro šviesos diodo ryškumui valdyti.

    Žemiau esančiame paveikslėlyje schematiškai parodytas signalas iš vieno iš Arduino PWM kaiščių.


    Kas 1/500 sekundės PWM išvestis generuoja impulsą. Šio impulso ilgį valdo „analogWrite“ funkcija. Tai yra, „analogWrite (0)“ negeneruos jokio impulso, bet „analogWrite (255)“ generuos signalą, kuris tęsis iki pat kito pradžios. Tai yra, susidarys įspūdis, kad tiekiamas vienas nuolatinis impulsas.

    Kai funkcijoje analogWrite nurodome reikšmę diapazone nuo 0 iki 255, generuojame tam tikros trukmės impulsą. Jei impulso ilgis yra 5%, nurodytam Arduino išėjimui pritaikysime 5% didžiausios galimos galios ir atrodo, kad LED nedega maksimaliu ryškumu.

    Palikite savo komentarus, klausimus ir pasidalykite savo asmenine patirtimi žemiau. Diskusijoje dažnai gimsta naujos idėjos ir projektai!