rgb led - web viewcu pwm este posibil sa obtinem aproape acelasi efect ca si cum tensiunea ar fi...
TRANSCRIPT
RGB LEDTask : Vrem ca un led RGB sa lumineze in diferite culori
Echipament necesar: Microcontroler/ un led RGB/ trei rezistori de 200 Ohm/ Breadboard/ fire
Ce este un led RGB? Este un led care este in masura sa lumineze in diferite culori. RGB provine de la culorile “red”(rosu), “green”(verde) si “blue”(albastru). In interiorul ledului RGB se gasesc trei leduri separate, fiecare putand lumina in una din cele trei culori. Acesta este motivul pentru care ledul RGB are patru contacte. Cel mai lung poate fi (depinde de versiune) anodul (+) sau catodul (-). Celelalte contacte apartin ledurilor de diferite culori.
Versiuna a; “Catod comun”- Cel mai lung contact al ledului RGB este “-“. In acest caz, celelalte trei contacte ar trebui legate la borna pozitiva (5V).
Versiunea b; “Anod comun” – Cel mai lung contact al ledului RGB este “+”. Asta inseamna ca celelalte trei contacte sunt legate la borna negativa (GND).
Este posibil sa se produca mai multe culori, amestecand culorile de baza. De exemplu, vom obtine “galben” amestecand “albastru” si “verde”.
Iata o modalitate simpla de a afla ce versiune de led RGB aveti. Aplicati “+” si “-“ pe led. Doar ledul conectat cu polaritate corecta va functiona.
Setup pentru versiunea a:
Setup pentru versiunea b:
Arduino este un microcontroler digital. La iesire putem avea doar “turn on” 5V sau “turn off” 0V. Dar pentru a realiza mai multe culori, celor trei culori de baza ale ledului ar trebui sa li se aplice si valori intermediare ale tensiunii. Din acest motiv, vom utiliza Pulse With Modulation. Pinii care pot fi utilizati cu PWM au un mic semn odulatoriu in fata numarului (“~”).
PWM permite obtinerea de tensiuni cuprinse intre +5V si 0V. Acest lucru se poate realiza prin aplicarea tensiunii maxime de 5V intervale scurte de timp (de ordinul milisecundelor) – pulsuri de tensiune. La o frecventa ridicata a unui astfel de semnal, se obtine practic o tensiune constanta pe pin. La o frecventa joasa a semnalului se pot obtine doar tensiuni apropiate valorii de 5V (puteti aprofunda subiectul pe internet). Cu PWM este posibil sa obtinem aproape acelasi efect ca si cum tensiunea ar fi variabila.
Urmatorul cod functioneaza cu ambele versiuni de RGB.
Sketch 1:
Cu ajutorul acestui cod vom putea aprinde si stinge cele trei culori pe rand, una cate una.
int LEDblue=3; //culoarea albastra este pe pinul 3
int LEDred=5; //culoarea rosie este pe pinul 5
int LEDgreen=6; //culoarea verde este pe pinul 6
int b=1000; //b defineste pauza de 1000 ms (1 secunda)
int brightnessblue=150; //valoare cuprinsa intre 0 si 255 – defineste stralucirea unei //singure culori - albastru
int brightnessred=150; //valoare cuprinsa intre 0 si 255 – defineste stralucirea unei //singure culori - rosu
int brightnessgreen=150; //valoare cuprinsa intre 0 si 255 – defineste stralucirea unei //singure culori - verde
int dark=0; //valoarea 0 pentru tensiune 0V – ledul va fi stins
void setup()
{
pinMode(LEDblue, OUTPUT);
pinMode(LEDgreen, OUTPUT);
pinMode(LEDred, OUTPUT);
}
void loop()
{
analogWrite(LEDblue, brightnessblue); // aprinde becul albastru
delay(b); //pauza
analogWrite(LEDblue, dark); // stinge becul albastru
analogWrite(LEDred, brightnessred); // aprinde becul rosu
delay(b); //pauza
analogWrite(LEDred, dark); // stinge becul rosu
analogWrite(LEDgreen, brightnessgreen); // aprinde becul verde
delay(b); //pauza
analogWrite(LEDgreen, dark); // stinge becul verde
}
Sketch 2:
Acest cod permite aprinderea simultana a cate doua leduri. In acest mod vom putea obtine culorile galben, turcoaz si violet.
int LEDblue=3; //culoarea albastra este pe pinul 3
int LEDred=5; //culoarea rosie este pe pinul 5
int LEDgreen=6; //culoarea verde este pe pinul 6
int b=1000; //b defineste pauza de 1000 ms (1 secunda)
int brightnessblue=150; //valoare cuprinsa intre 0 si 255 – defineste stralucirea unei //singure culori - albastru
int brightnessred=150; //valoare cuprinsa intre 0 si 255 – defineste stralucirea unei //singure culori - rosu
int brightnessgreen=150; //valoare cuprinsa intre 0 si 255 – defineste stralucirea unei //singure culori - verde
int dark=0; //valoarea 0 pentru tensiune 0V – ledul va fi stins
void setup()
{
pinMode(LEDblue, OUTPUT);
pinMode(LEDgreen, OUTPUT);
pinMode(LEDred, OUTPUT);
}
void loop()
{
analogWrite(LEDblue, brightnessblue); // albastru si rosu aprinse = violet aprins
analogWrite(LEDred, brightnessred);
delay(b); //pauza
analogWrite(LEDblue, dark); // albastru si rosu stinse = violet stins
analogWrite(LEDred, dark);
analogWrite(LEDgreen, brightnessgreen); // verde si rosu aprinse = galben aprins
analogWrite(LEDred, brightnessred);
delay(b); //pauza
analogWrite(LEDgreen, dark); // verde si rosu stinse = galben stins
analogWrite(LEDred, dark);
analogWrite(LEDblue, brightnessblue); // albastru si verde aprinse = turcoaz aprins
analogWrite(LEDgreen, brightnessgreen);
delay(b); //pauza
analogWrite(LEDblue, dark); // albastru si verde stinse = turcoaz stins
analogWrite(LEDgreen, dark);
}