Ce este si cum functioneaza un LED RGB?
Un LED RGB poate emite lumina de orice culoare,"amestecand" trei culori diferite:rosu,verde si albastru.
Un LED RGB este compus din trei LED-uri diferite,fiecare emitand lumina de o culoare diferita (rosie,verde sau albastra),prin urmare orice LED de acest tip este mai mare si are 4 pini,un pin pentru fiecare LED din componenta si un catod / anod comun,depinzand de tipul LED-ului RGB.Cea mai comuna varianta este cea cu catod comun,care va fi folosita in acest tutorial:
Prin modificara luminozitatii LED-urilor de diferite culori (prin tehnica PWM aplicata individual fiecarui LED),putem recrea aproape orice culoare.Daca mentinem aprinse toate LED-urile in proportii egale,obtinem lumina alba.Daca stingem LED-ul verde,obtinem lumina violet.Daca lasam doar LED-ul rosu aprins,LED-ul RGB va lumina rosu s.a.m.d:
Montajul
LED-ul are 4 pini:pinul cel mai lung este catodul (se conecteaza la GND),iar ceilalti pini se conecteaza la oricare trei pini digitali de pe placa,adaugand si cate un rezistor de 220 ohmi la fiecare conexiune (in total trei rezistori;in exemplu am folosit pinii 5,6 si 7):
Programul
Programul de mai jos va aprinde LED-ul RGB timp de 3 secunde,cu o culoare si o intensitate definita in program cum este explicat mai jos:
int rosu=7; //creare variabila "rosu" care contine pinul 7
int verde=6; //creare variabila "verde" care contine pinul 6
int albastru=5; //creare variabila "albastra" care contine pinul 5
void setup() {
pinMode(rosu, OUTPUT); //initializare pin "rosu" pentru emisie
pinMode(verde, OUTPUT); //initializare pin "verde" pentru emisie
pinMode(albastru, OUTPUT); //initializare pin "albastru" pentru emisie
culoare(255,255,255); //executare functie culoare cu parametrii cu valorile 255,255,255 (valorile se pot modifica)
delay(10000); // asteapta 3 secunde
culoare(0,0,0); //executare functie culoare cu parametrii cu valorile 0,0,0
}
void loop() {
}
void culoare(int valoareRosu, int valoareVerde, int valoareAlbastru){ */creare functie culoare cu trei parametri intregi:valoareRosu,valoareVerde,valoareAlbastru */
analogWrite(rosu,valoareRosu); /*trimite semnal analog prin pinul "rosu" egal cu valoarea variabilei valoareRosu */
analogWrite(verde,valoareVerde); /*trimite semnal analog prin pinul "verde" egal cu valoarea variabilei valoareVerde */
analogWrite(albastru,valoareAlbastru); /*trimite semnal analog prin pinul "albastru" egal cu valoarea variabilei valoareAlbastru */
}
Pentru a usura manipularea celor trei LED-uri din componenta (numite rosu,verde si albastru si pinii corespunzatori de asemenea) vom crea o functie (numita culoare) care foloseste trei parametri,corespunzatori celor trei pini numiti valoareRosu,valoareVerde si valoareAlbastru.
Oricare parametru este cuprins intre 255 (luminozitate maxima) si 0 (stins). Prin modificarea valorii parametrilor (in functia culoare),si implicit a luminozitatii celor trei LED-uri,putem recrea aproape orice culoare RGB:
int rosu=7; //creare variabila "rosu" care contine pinul 7
int verde=6; //creare variabila "verde" care contine pinul 6
int albastru=5; //creare variabila "albastra" care contine pinul 5
void setup() {
pinMode(rosu, OUTPUT); //initializare pin "rosu" pentru emisie
pinMode(verde, OUTPUT); //initializare pin "verde" pentru emisie
pinMode(albastru, OUTPUT); //initializare pin "albastru" pentru emisie
}
void loop() {
culoare(255, 0, 0); //lumina rosie
delay(1000); //asteapta 1 secunda
culoare(0, 255, 0); //lumina verde
delay(1000); //asteapta 1 secunda
culoare(0, 0, 255); //lumina albastra
delay(1000); //asteapta 1 secunda
culoare(255, 255, 255); //lumina alba
delay(1000); //asteapta 1 secunda
culoare(170, 0, 255); //lumina violet
delay(1000); //asteapta 1 secunda
}
void culoare(int valoareRosu, int valoareVerde, int valoareAlbastru){ //creare functie culoare cu trei parametri intregi:valoareRosu,valoareVerde,valoareAlbastru
analogWrite(rosu,valoareRosu); //trimite semnal analog prin pinul "rosu" egal cu valoarea variabilei valoareRosu
analogWrite(verde,valoareVerde); //trimite semnal analog prin pinul "verde" egal cu valoarea variabilei valoareVerde
analogWrite(albastru,valoareAlbastru); //trimite semnal analog prin pinul "albastru" egal cu valoarea variabilei valoareAlbastru
}
Acest program va aprinde LED-ul timp de o secunda prin cele 4 culori prezentate mai sus:rosu,verde,albastru,alb si violet.
Komentarze