- Potrebni materiali:
- LDR:
- RGB LED:
- Shema vezja:
- Pojasnilo programiranja:
- Delovanje mešalne svetilke Arduino:
Kaj pa, če lahko z enim samim vodnikom RGB ustvarimo različne barve in naredimo kotiček naše sobe bolj privlačen? Tukaj je preprosta barvna mešalna svetilka na osnovi Arduina, ki lahko spremeni barvo, ko se v sobi spremeni svetloba. Tako bo ta svetilka samodejno spremenila svojo barvo glede na svetlobne razmere v prostoru.
Vsaka barva je kombinacija rdeče, zelene in modre barve. Tako lahko z uporabo rdeče, zelene in modre barve ustvarimo poljubno barvo. Tu bomo torej spreminjali PWM, tj. Jakost svetlobe na LDR. To bo še dodatno spremenilo intenzivnost rdeče, zelene in modre barve v RGB LED in nastale bodo različne barve.
Spodnja tabela prikazuje kombinacije barv z ustrezno spremembo delovnih ciklov.
Potrebni materiali:
- 1 x Arduino UNO
- 1 x Breadboard
- 3 x 220-ohmski upori
- 3 x 1-kilohmski upori
- Jumper žice
- 3 x LDR
- 3 x barvni trakovi (rdeča, zelena, modra)
- 1 x RGB LED
LDR:
V tem vezju bomo uporabili fotorezistor (ali od svetlobe odvisen upor, LDR ali fotoprevodno celico). LDR-ji so izdelani iz polprevodniških materialov, da imajo svoje svetlobno občutljive lastnosti. Ti LDR-ji ali FOTOURISTORJI delujejo po principu "Photo Conductivity". To pravilo pravi, da kadar koli svetloba pade na površino LDR (v tem primeru) se prevodnost elementa poveča ali z drugimi besedami, upor LDR pade, ko svetloba pade na površino LDR. Ta lastnost zmanjšanja upora za LDR je dosežena, ker je lastnost polprevodniškega materiala, ki se uporablja na površini.
Tu se uporabljajo trije LDR senzorji za nadzor svetlosti posameznih rdečih, zelenih in modrih LED v RGB Led. Več o nadzoru LDR z Arduino lahko preberete tukaj.
RGB LED:
Obstajata dve vrsti RGB LED, ena je skupna katodna vrsta (skupna negativna) in druga običajna anodna vrsta (skupna pozitivna). V CC (Common Cathode ali Common Negative) bodo trije pozitivni terminali, vsak terminal predstavlja barvo in en negativni terminal, ki predstavlja vse tri barve.
V našem vezju bomo uporabili tip CA (Common Anode ali Common Positive). Če želimo, da RDEČA LED sveti, je treba pri tipu Common Anode ozemljiti RDEČ LED in napajati skupni pozitiv. Enako velja za vse LED diode. Tu se naučite povezati RGB LED z Arduino.
Shema vezja:
Popoln diagram vezja tega projekta je naveden zgoraj. Povezavo + 5V in ozemljitev, prikazano v vezju, lahko dobite iz 5V in ozemljitvenega zatiča Arduino. Sam Arduino lahko napajate iz prenosnika ali prek enosmerne vtičnice z 12V adapterjem ali 9V baterijo.
PWM bomo uporabili za spreminjanje svetlosti RGB led. Več o PWM lahko izveste tukaj. Tu je nekaj primerov PWM z Arduino:
- Variabilno napajanje Arduino Uno
- Upravljanje enosmernega motorja z uporabo Arduina
- Generator tonov na osnovi Arduino
Pojasnilo programiranja:
Najprej prijavimo vse vhodne in izhodne nožice, kot je prikazano spodaj.
const bajt red_sensor_pin = A0; const byte green_sensor_pin = A1; const byte blue_sensor_pin = A2; bajt const green_led_pin = 9; const bajt blue_led_pin = 10; const bajt red_led_pin = 11;
Začetne vrednosti senzorjev in led-diod razglasite za 0.
nepodpisano int red_led_value = 0; nepodpisano int blue_led_value = 0; nepodpisano int green_led_value = 0; nepodpisano int red_sensor_value = 0; nepodpisano int blue_sensor_value = 0; nepodpisano int green_sensor_value = 0; void setup () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, IZHOD); pinMode (green_led_pin, IZHOD); Serial.begin (9600); }
V odseku zanke bomo izvedli tri senzorje z analogRead (); delovanje in shranjevanje v treh različnih spremenljivkah.
void loop () { red_sensor_value = analogRead (red_sensor_pin); zamuda (50); blue_sensor_value = analogRead (blue_sensor_pin); zamuda (50); green_sensor_value = analogRead (green_sensor_pin);
Za odpravljanje napak te vrednosti natisnite na serijski monitor
Serial.println ("Neobdelane vrednosti senzorja:"); Serial.print ("\ t Rdeča:"); Serial.print (red_sensor_value); Serial.print ("\ t modro:"); Serial.print (blue_sensor_value); Serial.print ("\ t Zelena:"); Serial.println (green_sensor_value);
Od senzorjev bomo dobili vrednosti 0-1023, vendar imajo naši zatiči PWM Arduino 0-255 vrednosti kot izhod. Torej moramo pretvoriti naše surove vrednosti v 0-255. Za to moramo surove vrednosti razdeliti na 4 ALI preprosto lahko uporabimo funkcijo preslikave Arduino za pretvorbo teh vrednosti.
rdeča_redna vrednost = rdeča_senzorna_vrednost / 4; // določimo rdečo LED blue_led_value = blue_sensor_value / 4; // določimo modro LED green_led_value = green_sensor_value / 4; // definiramo Green Led
Natisnite preslikane vrednosti na serijski monitor
Serial.println ("Preslikane vrednosti senzorja:"); Serial.print ("\ t Rdeča:"); Serial.print (red_led_value); Serial.print ("\ t modro:"); Serial.print (blue_led_value); Serial.print ("\ t Zelena:"); Serial.println (green_led_value);
Z analogWrite () nastavite izhod za RGB LED
analogWrite (red_led_pin, red_led_value); // označimo rdečo LED analogWrite (blue_led_pin, blue_led_value); // označimo modro LED analogWrite (green_led_pin, green_led_value); // označimo zeleno
Delovanje mešalne svetilke Arduino:
Ker uporabljamo tri LDR-je, se tudi pri vpadu svetlobe na te senzorje spremeni njen upor, zaradi česar se napetosti spremenijo tudi na analognih zatičih Arduina, ki deluje kot vhodni zatič za senzorje.
Ko se intenzivnost svetlobe spremeni na teh senzorjih, bo njen LED v RGB zasvetil s spreminjanjem odpornosti in imamo različno mešanje barv v RGB LED s pomočjo PWM.