Nr.05 RGB LED

Eine RGB-LED ansteuern

Aufgabe: Eine RGB LED soll in verschiedenen Farben leuchten.

 Arduino RGB

Was ist eine RGB-LED? Eine RGB-LED ist eine LED die in verschiedenen Farben leuchten kann. Hinter der Bezeichnung RGB verbergen sich die Farbei „Rot“, „Grün“ und „Blau“. Die LED besteht im Inneren aus drei einzeln ansteuerbaren LEDS, die in den drei Farben leuchten. Deswegen hat eine RGB-LED auch so viele Beinchen, nämlich genau vier. Das längste der vier Beinchen ist je nach Version die gemeinsame Anode (+) bzw. Kathode (-). Mit den drei kürzeren Beinchen werden die einzelnen Farben der RGB-LED angesteuert.

Version a: „Common cathode“ – Das längste Beinchen der LED ist „-“ und die drei kürzeren Beinchen werden über „+“ (Spannung) angesteuert.

Version b) „Common anode“ – Das längste Beinchen der LED ist „+“ und die drei kürzeren Beinchen werden über „-“ (GND) angesteuert.

Durch eine Mischung der Farben können noch sehr viele weitere Farben erzeugt werden. Zum Beispiel entsteht durch die Ansteuerung der Farben „Blau“ und „Grün“ die Farbe „Türkis“.

 RGB-Mix-Arduino

Welche Version man selber hat, findet man durch einfaches umstecken von „+“ und „-“ an der LED heraus (Info: Eine LED leuchtet nur bei richtigem Anschluss)

Material: Arduino-Board / eine RGB-LED / drei Widerstände mit je 200 Ohm / Breadboard / Kabel

Aufbau für RGB LED Version a):

RGB-Aufbau

Aufbau für RGB LED Version b):

RGB-Aufbau-b

Der Arduino ist ein digitaler Mikrocontroller. Er kennt an seinen digitalen Ausgängen nur „5 Volt an“ oder „5V aus“. Damit man mit einer RGB-LED die vielen verschiedenen Farben erzeugen kann müssen die einzelnen Farben der LED jedoch genauer angesteuert werden. Dazu verwendet man die Pulsweitenmodulation. Die PWM (Pulsweitenmodulation) kann an den digitalen Pins verwendet werden, an denen auf dem Board eine kleine Welle aufgedruckt ist.

 

Die PWM lässt die Spannung zwischen +5V und 0V pulsieren. Die Spannung wird also im Millisekundenbereich ein und ausgeschaltet. Bei einer hohen PWM liegt das 5V Signal nahezu durchgehend am jeweiligen Pin an. Bei einer geringen PWM ist das 5V Signal kaum noch vorhanden (Da dies eine sehr kompakte Zusammenfassung ist, sollte man sich im Internet nach weiteren Erläuterungen umsehen). Mit dieser PWM kann man bei LEDs einen ähnlichen Effekt erreichen, als würde man die Spannung variieren.

Die folgenden Codes funktionieren für beide RGB-Versionen gleichermaßen:

Sketch 1:

In diesem Code werden die drei einzelnen Farben nacheinander ein- und ausgeschaltet.

int LEDblau = 3; // Farbe blau an Pin 3
int LEDrot = 5; // Farbe rot an Pin 5
int LEDgruen=6; // Farbe gruen an Pin 6
int p=1000; // p ist eine Pause mit 1000ms also 1 Sekunde
int brightness1a = 150; // Zahlenwert zwischen 0 und 255 – gibt die Leuchtstärke der einzelnen Farbe an
int brightness1b = 150; // Zahlenwert zwischen 0 und 255 – gibt die Leuchtstärke der einzelnen Farbe an
int brightness1c = 150; // Zahlenwert zwischen 0 und 255 – gibt die Leuchtstärke der einzelnen Farbe an
int dunkel = 0; // Zahlenwer 0 bedeutet Spannung 0V – also LED aus

void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}

void loop()
{
analogWrite(LEDblau, brightness1a); // blau einschalten
delay(p); // pause
analogWrite(LEDblau, dunkel); // blau ausschalten
analogWrite(LEDrot, brightness1b); // rot einschalten
delay(p); // pause
analogWrite(LEDrot, dunkel); // rotausschalten
analogWrite(LEDgruen, brightness1c); // gruen einschalten
delay(p); // pause
analogWrite(LEDgruen, dunkel); // gruenausschalten
}

Sketch 2:

In diesem Code werden die drei einzelnen Farben jeweils paarweise nacheinander ein- und ausgeschaltet. Dadurch entstehen die Farbmischungen Gelb, Türkis und Lila.

int LEDblau = 3; // Farbe blau an Pin 3
int LEDrot = 5; // Farbe rot an Pin 5
int LEDgruen=6; // Farbe gruen an Pin 6
int p=1000; // p ist eine Pause mit 1000ms also 1 Sekunde
int brightness1a = 150; // Zahlenwert zwischen 0 und 255 – gibt die Leuchtstärke der einzelnen Farbe an
int brightness1b = 150; // Zahlenwert zwischen 0 und 255 – gibt die Leuchtstärke der einzelnen Farbe an
int brightness1c = 150; // Zahlenwert zwischen 0 und 255 – gibt die Leuchtstärke der einzelnen Farbe an
int dunkel = 0; // Zahlenwert 0 bedeutet Spannung 0V – also LED aus

void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(LEDgruen, OUTPUT);
pinMode(LEDrot, OUTPUT);
}

void loop()
{
analogWrite(LEDgruen, brightness1c); // gruen und rot ein = gelb
analogWrite(LEDrot, brightness1b);
delay(p);
analogWrite(LEDgruen, dunkel); // gruen und rot aus = gelb aus
analogWrite(LEDrot, dunkel);
analogWrite(LEDgruen, brightness1c); // gruen und blau ein = türkis
analogWrite(LEDblau, brightness1b);
delay(p);
analogWrite(LEDgruen, dunkel); // gruen und blau aus = türkis aus
analogWrite(LEDblau, dunkel);
analogWrite(LEDrot, brightness1b); // rot und blau ein = lila
analogWrite(LEDblau, brightness1b);
delay(p);
analogWrite(LEDrot, dunkel); // rot und blau aus = lila aus
analogWrite(LEDblau, dunkel);
}