CLOPOTUL

Sunt cei care citesc aceasta stire inaintea ta.
Abonați-vă pentru a primi articole noi.
E-mail
Nume
Nume
Cum vrei să citești Clopoțelul?
Fără spam

Seria „Dare”.

RGB înseamnă ca prescurtare la Roșu, Verde, Albastru, cu aceste culori puteți obține orice culoare prin amestecare. LED-ul RGB contine 3 cristale mici R, G, B, cu care putem sintetiza orice culoare sau nuanta. În acest tutorial vom conecta un LED RGB la o placă Arduino și o vom face să strălucească cu toate culorile curcubeului.
Pentru acest proiect veți avea nevoie de piesele care sunt disponibile în kiturile „Basic” și „Learning Arduino”:

  1. Arduino Uno;
  2. cablu USB;
  3. Placă de prototipare;
  4. Fire tată-tată - 7 buc;
  5. Rezistoare 220 Ohm – 3 buc;
  6. LED RGB – 1 buc;
  7. Potențiometru.

Asamblam circuitul prezentat în figura 1.

Figura 1. Schema de conectare

Acum să începem să scriem schița.
LED-ul RGB ar trebui să strălucească cu toate culorile curcubeului de la roșu la violet, apoi să treacă la roșu și așa mai departe într-un cerc. Viteza de tranziție a culorii este controlată de un potențiometru. Tabelul 1 prezintă valorile lui R, G, B pentru cele 7 culori primare ale curcubeului.

Tabelul 1. Valorile R, G, B pentru cele 7 culori primare ale curcubeului

Pentru amestecarea culorilor Este necesar să furnizați întreaga gamă de tensiuni de la pinii Arduino la intrările LED R, G, B. Dar Arduino nu poate scoate o tensiune arbitrară la pinul digital. Se iese fie +5V (HIGH) fie 0V (LOW). Pentru a simula tensiunea parțială, se utilizează PWM (Pulse Width Modulation, sau PWM).

Sper că ai studiat deja capitolul 2.6 din cartea lui Jeremy Blum „Exploring Arduino: Tools and Techniques of Technical Wizardry”, care explică în detaliu mecanismul de modulare a lățimii pulsului.
Algoritmul de executare a programului:

  • Creștem valoarea componentei verzi a lui G până ajungem la valoarea portocaliului (255,125,0),
  • Creștem valoarea componentei verzi G până ajungem galben (255,255,0).
  • Reducem valoarea componentei roșii R la valoarea verde (0,255,0).
  • Punctul de plecare este roșu (255,0,0).
  • Creștem valoarea componentei albastre B la valoarea culorii albastre (0,255,255).
  • Reduceți valoarea componentei verzi G la valoarea albastru (0,0,255).
  • Creșteți treptat valoarea componentei roșii R până la valoarea culorii violet (255.0.255).
  • Reduceți valoarea componentei albastre B la valoarea culorii roșii (255,0,0).

Să trecem la pasul 1.

După fiecare pas ne oprim pentru a înregistra afișajul color,

Întârziere (VIEW_PAUSE);

verificăm valoarea potențiometrului și modificăm valoarea vitezei de schimbare a culorii.

Void setpause() ( pauză=hartă(analogRead(POT),0,1024,MIN_PAUSE,MAX_PAUSE); Serial.print("pause=");Serial.println(pauză); )

Să creăm o nouă schiță în Arduino IDE, adăugați codul din Lista 1 în el și încărcați schița pe placa Arduino. Vă reamintim că în setările Arduino IDE trebuie să selectați tipul plăcii (Arduino UNO) și portul de conectare a plăcii.
Listarea 1

Const int RED=11; // ieșirea R a LED-ului RGB const int VERDE=10; // ieșirea G a LED-ului RGB const int BLUE=9; // ieșirea B a LED-ului RGB int red; // variabilă pentru stocarea componentei R a culorii int verde; // variabilă pentru stocarea componentei G a culorii int albastru; // variabilă pentru stocarea componentei B a culorii const int POT=A0; // ieșire conexiune potențiometru const int MIN_PAUSE=10; // întârziere minimă de schimbare a culorii, ms const int MAX_PAUSE=100; // întârziere maximă pentru schimbarea culorii, ms int pauză; // variabilă pentru a stoca întârzierea curentă const int VIEW_PAUSE=2000; // timpul de fixare a culorii primare, ms void setup() ( Serial.begin(9600); ) void loop() ( // de la roșu la galben Serial.println("roșu - galben"); roșu=255;verde=0 ;albastru=0; pentru(verde=0;verde<=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;roșu--) setRGB(roșu,verde,albastru);<=255;blue++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от голубого к синему Serial.println("blue - blue"); red=0;green=255;blue=255; for(green=255;green>setpause();<=255;red++) setRGB(red,green,blue); setpause(); delay(VIEW_PAUSE); // от фиолетового к красному Serial.println("purple - red"); red=255;green=0;blue=255; for(blue=0;blue>întârziere(VIEW_PAUSE);

După încărcarea schiței, observăm schimbarea culorii LED-ului RGB cu culorile curcubeului și folosim potențiometrul pentru a modifica viteza de schimbare a culorii (vezi Figura 2.3).


Figura 2.3. LED RGB – toate culorile curcubeului

Ultima dată ne-am uitat la cum să conectăm o bandă LED la un Arduino prin driverul L298. Gestionarea culorilor a fost efectuată programatic - funcția Random. Acum este timpul să ne dăm seama cum să controlați culoarea benzii LED pe baza citirilor senzorului de temperatură și umiditate DHT 11.

Exemplul se bazează pe conectarea unei benzi LED prin driverul L298. În plus, exemplul a adăugat un afișaj LCD 1602, care va afișa citirile senzorului DHT 11.

Proiectul va necesita următoarele elemente Arduino:

  1. Placa Arduino UNO.
  2. Display LCD 1602 + I2C.
  3. Senzor de temperatură și umiditate DHT
  4. Banda LED.
  5. Driver L298.
  6. Alimentare 9-12V.
  7. Carcasă pentru Arduino și display (opțional).

În primul rând, să ne uităm la schema de circuit (Fig. 1). Pe el puteți vedea cum să conectați toate elementele de mai sus. Nu este nimic complicat în asamblarea circuitului și conectarea acestuia, dar merită menționată o nuanță de care majoritatea oamenilor uită și, ca urmare, obțin rezultate incorecte atunci când lucrează cu benzi LED cu Arduino.

Figura 1. Diagrama schematică conectarea Arduino și banda LED cu senzor DHT 11

Pentru a evita funcționarea incorectă a benzii LED (pâlpâire, nepotrivire a culorilor, iluminare incompletă etc.), alimentarea întregului circuit trebuie făcută comună, adică. combinați pinii GND (împământare) ai controlerului Arduino și a driverului L298 (bandă LED). Puteți vedea cum să faceți acest lucru în diagramă.

Câteva cuvinte despre conectarea unui senzor de umiditate. Dacă cumpărați un DHT 11 gol, fără curele, atunci între primul și al doilea contact, respectiv 5V și, respectiv, Data, trebuie să lipiți un rezistor cu o valoare nominală de 5-10 kOhm. Domeniul de măsurare a temperaturii și umidității este scris pe spatele carcasei senzorului DHT 11 Temperatura: 0-50 grade Celsius. Umiditate: 0-80%.


Figura 2. Conexiune corectă senzor de umiditate DHT 11

După asamblarea tuturor elementelor proiectului conform schemei, trebuie să scriem cod de program care să facă totul să funcționeze așa cum avem nevoie. Și trebuie banda led culoarea schimbată în funcție de citirile senzorului DHT 11 (umiditate).

Pentru a programa senzorul DHT 11, veți avea nevoie de o bibliotecă suplimentară.

Cod de program Arduino și RGB - bandă. Schimbă culoarea benzii în funcție de umiditate.

#include #include //bibliotecă pentru lucrul cu afișajul LCD 1602 #include //biblioteca pentru lucrul cu senzorul de umiditate și temperatură DHT 11 int chk; //variabila va stoca toate datele de la senzorul DHT11 int hum; //variabila va stoca citirile de umiditate de la senzorul DHT11 dht11 DHT; //obiect de tip DHT #define DHT11_PIN 4 //Pinul de date al senzorului DHT11 este conectat la intrarea 4 #define LED_R 9 //pin pentru canalul R #define LED_G 10 //pin pentru canal G #define LED_B 11 //pin pentru canalul B / /variabilele vor stoca valori de culoare //la amestecarea tuturor celor trei culori se va obține culoarea necesară int led_r=0, led_g=0, led_b=0; //declararea unui obiect de afișare cu adresa 0x27 //nu uitați să utilizați un afișaj în proiect prin intermediul unei plăci I2C LiquidCrystal_I2C lcd(0x27,16,2); void setup() ( //creează un afișaj lcd.init(); lcd.backlight(); // declară pinii ca ieșiri pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); ) void loop () ( chk = DHT.read(DHT11_PIN);//citiți date de la senzorul DHT11 //date de ieșire pe afișaj lcd.print("Temp: "); lcd.print(DHT.temperature, 1); lcd.print( " C"); lcd.setCursor(0,1); lcd.print(DHT.humidity, 1); necesar pentru sondajul lcd.clear(); verde dacă ((hum >= 19) && (hum<= 30)) { led_r = 1; led_g = 255; led_b = 1; } //в диапозоне от 31 до 40% влажности выдать красный цвет if ((hum >= 31) && (hum<= 40)) { led_r = 255; led_g = 1; led_b = 1; } //в диапозоне от 41 до 49% влажности выдать синий цвет if ((hum >= 41) && (hum<= 49)) { led_r = 1; led_g = 1; led_b = 255; } // подача сигналов цвета на выхода analogWrite(LED_R, led_r); analogWrite(LED_G, led_g); analogWrite(LED_B, led_b); }

Etichete: Etichete

În multe aplicații, atât amatoare, cât și profesionale, uneori este necesar să se genereze culori de diferite nuanțe. Utilizarea de LED-uri monocolore separate în astfel de cazuri este nejustificată din punct de vedere structural și economic. Prin urmare, LED-urile RGB au fost dezvoltate în astfel de scopuri.



Un LED RGB (acronimul înseamnă RED, GREEN, BLUE) este o combinație de cristale capabile să producă culori roșu, verde și albastru. Datorită acestei combinații, aceste LED-uri pot reproduce 16 milioane de nuanțe de lumină. LED-urile RGB sunt ușor de controlat și pot fi folosite în proiecte Arduino fără probleme. Acest material va arăta un exemplu de control al unui LED RGB folosind Arduino.


Deoarece un LED RGB, așa cum s-a menționat mai sus, este o combinație de cristale de trei culori de bază diferite, este reprezentat în circuite ca trei LED-uri. Din punct de vedere structural, un astfel de LED are un terminal comun și trei terminale pentru fiecare culoare. Mai jos este o diagramă despre cum să conectați un LED RGB la un Arduino. Circuitul include, de asemenea, un afișaj LCD alfanumeric 16x2, potențiometre și rezistențe în serie cu liniile LED RGB. Aceste rezistențe (R1 = 100 ohmi, R2 = 270 ohmi, R3 = 330 ohmi) limitează curentul LED-urilor astfel încât acestea să nu se defecteze. Rezistoarele variabile (potențiometre) VR1-VR3 cu o rezistență de 10 KOhm sunt folosite pentru a controla intensitatea LED-ului RGB, adică pot fi folosite pentru a seta culoarea LED-ului prin schimbarea intensității roșu, verde și albastru. cristale. Potențiometrul VR1 este conectat la intrarea analogică A0, VR2 la intrarea analogică A1 și VR3 la intrarea analogică A2.



Ecranul LCD în acest caz este utilizat pentru a afișa valoarea culorii și valoarea hexazecimală a codului de culoare. Valoarea codului de culoare este afișată pe prima linie a ecranului LCD (ca Rxxx Gxxx Bxxx, unde xxx este o valoare numerică), iar codul hexazecimal este afișat pe a doua linie a ecranului LCD (ca HEXxxxxxx). Un rezistor de 100 ohmi R4 este folosit pentru a limita curentul aplicat la iluminarea de fundal LCD, iar un rezistor variabil de 10K ohmi VR4 este folosit pentru a regla contrastul LCD.


Mai jos este un cod (schiță) care vă permite să controlați schimbarea culorii unui LED RGB folosind placa Arduino și potențiometrele conectate la aceasta.


#include // bibliotecă pentru afișaj LCD LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Linii Arduino pentru conectarea afișajului LCD int Radj; int Gadj; int Badj; int Rval=0; int Gval=0; int Bval=0; int R = 9; int G = 10; int B = 11; void setup() ( pinMode(R, OUTPUT); // Linia 9 este direcționată către pinMode de ieșire (G, OUTPUT); // Linia 10 este direcționată către pinMode de ieșire (B, OUTPUT); // Linia 11 este direcționată la ieșire lcd.begin (16,2); (0, 0); lcd.print(" R G B "); lcd.setCursor("HEX= "); la (0-255) Gval=Gadj/4 // Convertiți intervalul de la (0-1023) la (0-255) Bval=Badj/4 // Convertiți intervalul de la (0-1023) la (0-; 255) lcd.setCursor(2,0);<10) { lcd.setCursor(2,0); lcd.print("00"); lcd.print(Rval); } else if(Rval<100) { lcd.setCursor(2,0); lcd.print("0"); lcd.print(Rval); } else { lcd.setCursor(2,0); lcd.print(Rval); } lcd.setCursor(8,1); if (Rval<16) { lcd.print("0"); lcd.print(Rval, 16); } else { lcd.print(Rval, 16); } lcd.setCursor(7,0); if (Gval<10) { lcd.setCursor(7,0); lcd.print("00"); lcd.print(Gval); } else if(Gval<100) { lcd.setCursor(7,0); lcd.print("0"); lcd.print(Gval); } else { lcd.setCursor(7,0); lcd.print(Gval); } lcd.setCursor(10,1); if (Gval<16) { lcd.print("0"); lcd.print(Gval, 16); } else { lcd.print(Gval, 16); } lcd.setCursor(12,0); if (Bval<10) { lcd.setCursor(12,0); lcd.print("00"); lcd.print(Bval); } else if(Bval<100) { lcd.setCursor(12,0); lcd.print("0"); lcd.print(Bval); } else { lcd.setCursor(12,0); lcd.print(Bval); } lcd.setCursor(12,1); if (Bval<16) { lcd.print("0"); lcd.print(Bval, 16); } else { lcd.print(Bval, 16); } analogWrite(R, Rval); // ШИМ-выход для красного цвета analogWrite(G, Gval); // ШИМ-выход для зеленого цвета analogWrite(B, Bval); // ШИМ-выход для синего цвета }

LED-urile multicolore, sau RGB, așa cum sunt numite și ele, sunt folosite pentru a afișa și a crea o iluminare de culoare care se schimbă dinamic. De fapt, nu au nimic special la ele, haideți să ne dăm seama cum funcționează și ce sunt LED-urile RGB.

Structura internă

De fapt, un LED RGB este format din trei cristale de o singură culoare combinate într-o singură carcasă. Numele RGB înseamnă Roșu - roșu, Verde - verde, Albastru - albastru, în funcție de culorile pe care le emite fiecare cristal.

Aceste trei culori sunt de bază, iar prin amestecarea lor se formează orice culoare, această tehnologie a fost folosită de mult în televiziune și fotografie. În imaginea de mai sus, puteți vedea strălucirea fiecărui cristal în parte.

In aceasta poza vedeti principiul amestecarii culorilor pentru a obtine toate nuantele.

Cristalele din LED-urile RGB pot fi conectate conform următoarei scheme:

Cu anod comun;

Cu un catod comun;

Nu este conectat.

În primele două opțiuni, veți vedea că LED-ul are 4 pini:

Sau 6 concluzii în ultimul caz:

Puteți vedea în fotografie că sunt trei cristale vizibile clar sub obiectiv.

Pentru astfel de LED-uri sunt vândute plăcuțe speciale de montare, iar alocațiile pinilor sunt chiar indicate pe ele.

LED-urile RGBW nu pot fi ignorate; diferența lor este că în carcasa lor există un alt cristal care emite lumină albă.

Desigur, nu ne-am putea lipsi de benzi cu astfel de LED-uri.

Această imagine prezintă o bandă cu LED-uri RGB, asamblată conform unui circuit cu un anod comun, intensitatea strălucirii este reglată prin controlul „-” (minus) al sursei de alimentare.

Pentru a schimba culoarea unei benzi RGB, se folosesc controlere RGB speciale - dispozitive pentru comutarea tensiunii furnizate pe bandă.

Iată pinout-ul RGB SMD5050:

Iar benzile, nu există caracteristici speciale de lucru cu benzi RGB, totul rămâne la fel ca la modelele cu o singură culoare.

Există și conectori pentru conectarea benzilor LED fără lipire.

Iată pinout-ul unui LED RGB de 5 mm:

Cum se schimbă culoarea strălucirii

Ajustarea culorii se realizează prin ajustarea luminozității radiației de la fiecare dintre cristale. Ne-am uitat deja.

Controlerul RGB pentru bandă funcționează pe același principiu, conține un microprocesor care controlează terminalul negativ al sursei de alimentare - îl conectează și îl deconectează de la circuitul de culoare corespunzătoare. De obicei, o telecomandă este inclusă cu controlerul. Controlerele vin în diferite capacități, dimensiunea lor depinde de asta, pornind de la o astfel de miniatură.

Da, un dispozitiv atât de puternic într-o carcasă de dimensiunea unei surse de alimentare.

Ele sunt conectate la bandă conform următoarei scheme:

Deoarece secțiunea transversală a pistelor de pe bandă nu permite conectarea următoarei secțiuni a benzii în serie cu aceasta, dacă lungimea primei depășește 5 m, trebuie să conectați a doua secțiune cu fire direct de la controlerul RGB .

Dar poți să ieși din situație și să nu tragi 4 fire suplimentare la 5 metri de controler și să folosești un amplificator RGB. Pentru ca acesta să funcționeze, trebuie să întindeți doar 2 fire (plus și minus 12V) sau să alimentați o altă sursă de alimentare de la cea mai apropiată sursă de 220V, precum și 4 fire de „informații” din segmentul anterior (R, G și B) acestea sunt necesare pentru a primi comenzi de la controler, astfel încât întreaga structură să strălucească în mod egal.

Și următorul segment este deja conectat la amplificator, adică. folosește semnalul de la bucata anterioară de bandă. Adică, puteți alimenta banda de la amplificator, care va fi amplasat direct lângă acesta, economisind astfel bani și timp la așezarea firelor de la controlerul RGB principal.

Ajustăm RGB-led cu propriile noastre mâini

Deci, există două opțiuni pentru controlul LED-urilor RGB:

Iată o versiune a circuitului fără a utiliza Arduino și alte microcontrolere, folosind trei drivere CAT4101 capabile să furnizeze curent de până la 1A.

Cu toate acestea, acum controlerele sunt destul de ieftine și dacă trebuie să reglați banda LED, este mai bine să cumpărați o opțiune gata făcută. Circuitele cu Arduino sunt mult mai simple, mai ales că poți scrie o schiță cu care fie vei seta manual culoarea, fie selecția culorilor va fi automată în conformitate cu un algoritm dat.

Concluzie

LED-urile RGB fac posibilă crearea unor efecte de iluminare interesante; Nu există diferențe speciale atunci când lucrați cu ele față de LED-urile convenționale.

LED-ul în trei culori poate străluci cu toate culorile curcubeului! De acord, acest lucru este mult mai interesant decât doar să clipești un LED obișnuit
Să începem a treia lecție de cunoaștere a Arduino.

Conexiune echipament:
De fapt, un LED tricolor este format din trei LED-uri (roșu, verde și albastru) într-un singur pachet. Când îl rulăm la diferite niveluri de luminozitate și intensitate de roșu, verde și albastru, obținem culori noi.

Există o mică teșire pe marginea LED-ului, aceasta este cheia, arată către piciorul LED-ului roșu, apoi există cel general, apoi verde și albastru.

Conectați piciorul LED roșu la rezistența de 330 ohmi. Conectați celălalt capăt al rezistenței la portul Arduino pin9.

Conectați pinul comun la GND.

Conectați piciorul VERDE la rezistența de 330 ohmi.

Conectați celălalt capăt al rezistenței la portul Arduino pin10.

Conectați piciorul ALBASTRU la rezistența de 330 ohmi.

Conectați celălalt capăt al rezistenței la portul Arduino pin11.

Următoarea imagine arată aspectul unei plăci de breadboard cu circuitul asamblat și a unei plăci Arduino cu fire care provin de la placa de breadboard.

Kit de experimente ArduinoKit
Cod program pentru experiența nr. 3:

Tot ce rămâne este să descărcați programul pe Arduino printr-un cablu USB. Descărcați schița cu a treia lecție LED RGB - mai sus în articol.



CLOPOTUL

Sunt cei care citesc aceasta stire inaintea ta.
Abonați-vă pentru a primi articole noi.
E-mail
Nume
Nume
Cum vrei să citești Clopoțelul?
Fără spam