RGB LEDs (und die Unterschiede zwischen Common cathode/anode LEDs)
Hier wird der Unterschied zwischen den zwei RGB LED Typen erklärt und die Programmierung über direkte Ansteuerung von Outputs Pins und alternativ unter Verwendung einer Bibliothekt gezeigt.
Anschluss der RGB
Es gibt zwei Typen:
- der längste Fuß der RGB LED ist eine Kathode (verbunden mit GND) -> Common Cathode
- der längste Fuß ist eine Anode (verbunden mit +5V) -> Common Annode
Je nach Typ müssen die anderen 3 Füße mit HIGH bzw. LOW Pegel ein/ausgeschaltet werden.
Beispielprogramm (Common Anode)
Verdrahtung:
- “Common” an +5V
- Rot, Grün und Blau an einen der PWM-Pins, bspw. 3, 5 und 6
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
/*
Beispielprogramm für eine LED RGB mit "Common Anode",
d.h. Anschluss von +5V an den längsten Fuß der RGB LED.
HIGH an einem der RGB Pins heißt "aus".
*/
#define LED_ROT 5
#define LED_GREEN 6
#define LED_BLUE 3
void setup() {
pinMode(LED_ROT, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
// alle LEDs aussschalten
analogWrite(LED_ROT, 255);
analogWrite(LED_GREEN, 255);
analogWrite(LED_BLUE, 255);
}
void loop() {
for (int i=0; i<255; i+=5) {
analogWrite(LED_ROT, 255-i);
delay(20);
}
analogWrite(LED_ROT, 255); // rot ausschalten
for (int i=0; i<255; i+=5) {
analogWrite(LED_GREEN, 255-i);
delay(20);
}
analogWrite(LED_GREEN, 255); // grün ausschalten
for (int i=0; i<255; i+=5) {
analogWrite(LED_BLUE, 255-i);
delay(20);
}
analogWrite(LED_BLUE, 255); // blau einschalten
for (int i=0; i<255; i+=5) {
analogWrite(LED_ROT, 255-i);
analogWrite(LED_BLUE, 255-i);
delay(20);
}
analogWrite(LED_ROT, 255); // rot ausschalten
analogWrite(LED_BLUE, 255); // blau ausschalten
for (int i=0; i<255; i+=5) {
analogWrite(LED_ROT, 255-i);
analogWrite(LED_GREEN, 255-i);
delay(20);
}
analogWrite(LED_ROT, 255); // rot ausschalten
analogWrite(LED_GREEN, 255); // blau ausschalten
delay(1000);
}
Beispielprogramm: Verwendung der Bibliothek RGB von Steven
Zuerst die Bibliothek RGB von WILMOUTH Steven im Arduino Bibliotheksmanager installieren.
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
/*
Beispielprogramm für eine LED RGB mit "Common Anode",
d.h. Anschluss von +5V an den längsten Fuß der RGB LED.
Verwendet wird die Bibliothek RGB von WILMOUTH Steven
HIGH an einem der RGB Pins heißt "aus".
*/
#include <RGBLed.h>
#define RED_PIN 5
#define GREEN_PIN 6
#define BLUE_PIN 3
RGBLed led(RED_PIN, GREEN_PIN, BLUE_PIN, RGBLed::COMMON_ANODE);
// alternativ RGBLed::COMMON_CATHODE verwenden
void setup() {
// LED in allen 3 Farben für 200 ms aufleuchten lassen
led.flash(RGBLed::RED, 200);
led.flash(RGBLed::GREEN, 200);
led.flash(RGBLed::BLUE, 200);
}
void loop() {
for (int i=0; i<255; ++i) {
led.gradient(RGBLed::RED, RGBLed::GREEN, i);
delay(10);
}
for (int i=0; i<255; ++i) {
led.gradient(RGBLed::GREEN, RGBLed::BLUE, i);
delay(10);
}
for (int i=0; i<255; ++i) {
led.gradient(RGBLed::BLUE, RGBLed::RED, i);
delay(10);
}
}
This post is licensed under
CC BY 4.0
by the author.