Dioda LED RGB – Sterowanie Arduino

Dioda LED RGB są to 3 diody scalone w jedną. Ma 4 nóżki, i tu zależnie od tego czy dioda jest ze wspólną anodą lub katodą 3 służą do sterowania barwą, a jedna to masa lub zasilanie.

Typy Diod RGB

Tu rezystory są też potrzebne, ale do każdej odrębnej diody wstawiamy po jednym.

Zrealizujemy płynne przejście po dostępnych barwach. Tu potrzebna będzie znajomość modulacji szerokości impulsów (PWM). O co w tym chodzi ?

Arduino wytwarza sygnały cyfrowe złożone z zer – stanów niskich i jedynek – stanów wysokich. Zazwyczaj stan niski to napięcie bliskie 0V, a stan wysoki to napięcie 5V. Przy przewodowej transmisji danych wykorzystujemy oba te stany. Podając okresowy sygnał złożony na przemian z zer i jedynek można sterować mocą urządzeń elektrycznych. Sterowanie te odbywa się poprzez zmianę czasu trwania stanu niskiego w całym okresie. Tak graficznie możemy przedstawić sygnał PWM.

Modulacja PWM Arduino

Wyjścia sygnału PWM na płytce Arduino oznaczone zostały falką.

Wyjścia PWM Arduino

Aby wygenerować programowo sygnał PWM. Musimy użyć takiej instrukcji:

1
analogWrite(pin, wypełnienie);

Wypełnienie sygnału ma 256 poziomów, czyli podajemy tu wartość z zakresu 0-255.

255-100%
191-75%
127-50%
63-25%
0-0%

Wróćmy do naszej diody LED RGB. Tak wygląda program do płynnego przejścia po barwach:

Teraz do sterowania wypełnieniem użyjemy potencjometru. Dodajmy go na płytkę stykową. Środkową nóżkę podłączamy do wejść z literką A.

Nasz program zmieni się na taki:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
int ZIELONA = 3;
int NIEBIESKA = 5;
int CZERWONA = 6;
int delayTime = 20;
 
void setup() {
 
pinMode(ZIELONA, OUTPUT);
pinMode(NIEBIESKA, OUTPUT);
pinMode(CZERWONA, OUTPUT);
digitalWrite(ZIELONA, HIGH);
digitalWrite(NIEBIESKA, HIGH);
digitalWrite(CZERWONA, HIGH);
}
 
int CzerwonaVal;
int NiebieskaVal;
int ZielonaVal;
 
void loop() {
 
int CzerwonaVal = 255;
int NiebieskaVal = 0;
int ZielonaVal = 0;
for( int i = 0 ; i < 255 ; i += 1 ){
ZielonaVal += 1;
CzerwonaVal -= 1;
analogWrite( ZIELONA, ZielonaVal );
analogWrite( CZERWONA, CzerwonaVal );
 
delay( delayTime );
}
 
CzerwonaVal = 0;
NiebieskaVal = 0;
ZielonaVal = 255;
for( int i = 0 ; i < 255 ; i += 1 ){
NiebieskaVal += 1;
ZielonaVal -= 1;
analogWrite( NIEBIESKA, NiebieskaVal );
analogWrite( ZIELONA, ZielonaVal );
 
delay( delayTime );
}
 
CzerwonaVal = 0;
NiebieskaVal = 255;
ZielonaVal = 0;
for( int i = 0 ; i < 255 ; i += 1 ){
CzerwonaVal += 1;
NiebieskaVal -= 1;
analogWrite( CZERWONA, CzerwonaVal );
analogWrite( NIEBIESKA, NiebieskaVal );
 
delay( delayTime );
}
}

Teraz do sterowania wypełnieniem użyjemy potencjometru. Dodajmy go na płytkę stykową. Środkową nóżkę podłączamy do wejść z literką A (wejścia analogowe) , z których możemy odczytywać wartości napięcia.

Sterowanie diody potencjometrem i ARDUINO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int ZIELONA = 3;
int NIEBIESKA = 5;
int CZERWONA = 6;
int POT1 = A0;
int POT2 = A1;
int POT3 = A2;
int delayTime = 20;
 
void setup() {
 
pinMode(ZIELONA, OUTPUT);
pinMode(NIEBIESKA, OUTPUT);
pinMode(CZERWONA, OUTPUT);
pinMode(POT1, INPUT);
pinMode(POT2, INPUT);
pinMode(POT3, INPUT);
 
digitalWrite(ZIELONA, HIGH);
digitalWrite(NIEBIESKA, HIGH);
digitalWrite(CZERWONA, HIGH);
}
 
int CzerwonaVal;
int NiebieskaVal;
int ZielonaVal;
 
void loop() {
 
CzerwonaVal = map(analogRead(POT1),0,1023,0,255);
NiebieskaVal = map(analogRead(POT2),0,1023,0,255);
ZielonaVal = map(analogRead(POT3),0,1023,0,255);
digitalWrite(CZERWONA, CzerwonaVal);
digitalWrite(CZERWONA, NiebieskaVal);
digitalWrite(CZERWONA, ZielonaVal);
delay( delayTime );
}

Źródło : http://blog.mageek.com.pl/kurs-arduino/dioda-led-rgb-sterowanie-arduino/