- Materiale necesare:
- LDR:
- LED RGB:
- Diagrama circuitului:
- Explicație de programare:
- Funcționarea lămpii de amestecare a culorilor Arduino:
Ce se întâmplă dacă putem genera culori diferite folosind un singur LED RGB și să facem colțul camerei mai atractiv? Deci, iată o lampă simplă de amestecare a culorilor pe bază de Arduino, care poate schimba culoarea atunci când se schimbă lumina în cameră. Deci, această lampă își va schimba automat culoarea în funcție de condițiile de lumină din cameră.
Fiecare culoare este combinația dintre culoarea roșie, verde și albastră. Deci, putem genera orice culoare folosind culori roșii, verzi și albastre. Deci, aici vom varia PWM, adică intensitatea luminii pe LDR-uri. Acest lucru va schimba în continuare intensitatea culorilor roșu, verde și albastru în LED-ul RGB și vor fi produse diferite culori.
Tabelul de mai jos prezintă combinațiile de culori cu modificarea respectivă a ciclurilor de funcționare.
Materiale necesare:
- 1 x Arduino UNO
- 1 x panou de pâine
- 3 rezistoare de 220 ohmi
- 3 x rezistențe de 1 kilohm
- Sârme de jumper
- 3 x LDR-uri
- 3 benzi colorate (roșu, verde, albastru)
- 1 x LED RGB
LDR:
Vom folosi fotorezistor (sau rezistor dependent de lumină, LDR sau celulă foto-conductivă) aici în acest circuit. LDR-urile sunt fabricate din materiale semiconductoare pentru a le permite să aibă proprietățile lor sensibile la lumină. Aceste LDR-uri sau REZISTENTE FOTO funcționează pe principiul „Conductivității fotografice”. Acum, ceea ce spune acest principiu este că, ori de câte ori lumina cade pe suprafața LDR (în acest caz), conductanța elementului crește sau cu alte cuvinte, rezistența LDR cade atunci când lumina cade pe suprafața LDR. Această proprietate a scăderii rezistenței pentru LDR se realizează deoarece este o proprietate a materialului semiconductor utilizat la suprafață.
Aici sunt folosiți trei senzori LDR pentru a controla luminozitatea LED-urilor roșii, verzi și albastre din interiorul LED-ului RGB. Aflați mai multe despre controlul LDR cu Arduino aici.
LED RGB:
Există două tipuri de LED-uri RGB, unul este tip catod comun (negativ comun) și altul este tip anod comun (pozitiv comun). În CC (catod comun sau negativ comun), vor exista trei terminale pozitive fiecare terminal reprezentând o culoare și un terminal negativ reprezentând toate cele trei culori.
În circuitul nostru vom folosi tipul CA (anod comun sau pozitiv comun). În tipul Anod comun, dacă vrem să fie aprins LED-ul ROȘU, trebuie să punem la masă pinul LED-ului ROȘU și să alimentăm pozitivul comun. Același lucru este valabil pentru toate LED-urile. Aflați aici pentru a interfața LED-ul RGB cu Arduino.
Diagrama circuitului:
Schema completă a circuitului acestui proiect este prezentată mai sus. Conexiunea + 5V și la masă prezentate în schema circuitului pot fi obținute de la pinul de 5V și de masă al Arduino. Arduino în sine poate fi alimentat de pe laptop sau prin mufa DC folosind un adaptor de 12V sau o baterie de 9V.
Vom folosi PWM pentru a schimba luminozitatea ledului RGB. Puteți afla mai multe despre PWM aici. Iată câteva exemple PWM cu Arduino:
- Sursă de alimentare variabilă de către Arduino Uno
- Control motor DC folosind Arduino
- Generator de tonuri bazate pe Arduino
Explicație de programare:
În primul rând, declarăm toate intrările și pinii de ieșire așa cum se arată mai jos.
octet const red_sensor_pin = A0; octet const green_sensor_pin = A1; octet const blue_sensor_pin = A2; octet const green_led_pin = 9; octet const blue_led_pin = 10; octet const red_led_pin = 11;
Declarați valorile inițiale ale senzorilor și led-urilor ca 0.
unsigned int red_led_value = 0; unsigned int blue_led_value = 0; unsigned int green_led_value = 0; unsigned int red_sensor_value = 0; unsigned int blue_sensor_value = 0; unsigned int green_sensor_value = 0; void setup () { pinMode (pin_ruț roșu, IEȘIRE); pinMode (blue_led_pin, OUTPUT); pinMode (green_led_pin, OUTPUT); Serial.begin (9600); }
În secțiunea buclă, vom lua ieșirea a trei senzori cu analogRead (); funcționează și stochează în trei variabile diferite.
bucla nulă () { red_sensor_value = analogRead (red_sensor_pin); întârziere (50); blue_sensor_value = analogRead (blue_sensor_pin); întârziere (50); green_sensor_value = analogRead (green_sensor_pin);
Imprimați aceste valori pe monitorul serial în scopul depanării
Serial.println ("Valorile senzorului brut:"); Serial.print ("\ t Roșu:"); Serial.print (red_sensor_value); Serial.print ("\ t Blue:"); Serial.print (blue_sensor_value); Serial.print ("\ t Verde:"); Serial.println (green_sensor_value);
Vom obține 0-1023 valori de la senzori, dar pinii Arduino PWM au 0-255 valori ca ieșire. Deci, trebuie să ne convertim valorile brute la 0-255. Pentru aceasta trebuie să împărțim valorile brute la 4 SAU pur și simplu putem folosi funcția de cartografiere a Arduino pentru a converti aceste valori.
red_led_value = red_sensor_value / 4; // definește LED-ul roșu blue_led_value = blue_sensor_value / 4; // definește LED-ul albastru green_led_value = green_sensor_value / 4; // definește Ledul verde
Imprimați valorile mapate pe monitorul serial
Serial.println ("Valorile senzorului mapat:"); Serial.print ("\ t Roșu:"); Serial.print (red_led_value); Serial.print ("\ t Blue:"); Serial.print (blue_led_value); Serial.print ("\ t Verde:"); Serial.println (green_led_value);
Utilizați analogWrite () pentru a seta ieșirea pentru LED-ul RGB
analogWrite (red_led_pin, red_led_value); // indică LED-ul roșu analogWrite (blue_led_pin, blue_led_value); // indica LED albastru analogWrite (green_led_pin, green_led_value); // indică verde
Funcționarea lămpii de amestecare a culorilor Arduino:
Deoarece folosim trei LDR, deci, atunci când lumina incidentă pe acești senzori, rezistența se modifică, rezultatul se modifică și la tensiunile analogice ale Arduino, care acționează ca pini de intrare pentru senzori.
Când intensitatea luminii se schimbă pe acești senzori, ledul respectiv în RGB va străluci cu o schimbare a rezistenței și avem diferite amestecuri de culori în ledul RGB folosind PWM.