RGB LED - Web viewCu PWM este posibil sa obtinem aproape acelasi efect ca si cum tensiunea ar fi...

Click here to load reader

  • date post

    30-Jan-2018
  • Category

    Documents

  • view

    219
  • download

    2

Embed Size (px)

Transcript of RGB LED - Web viewCu PWM este posibil sa obtinem aproape acelasi efect ca si cum tensiunea ar fi...

RGB LED

Task : 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);

}