Post

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:

  1. der längste Fuß der RGB LED ist eine Kathode (verbunden mit GND) -> Common Cathode
  2. 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.

RGB LED Types

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.