RGB-LED am Arduino ansteuern

FunduinoZuletzt aktualisiert am

Farben mischen mit Pulsweitenmodulation

Aufgabe: Eine RGB-LED soll in verschiedenen Farben leuchten – erst in den drei Grundfarben nacheinander, danach in gemischten Farben.

RGB-LED mit drei Vorwiderständen auf einem Steckbrett am Funduino UNO R3
Versuchsaufbau: RGB-LED am Funduino UNO R3

Mikrocontroller wählen

Pins, Schaltplan und Sketch in den Arbeitsschritten wechseln mit deiner Auswahl. Sie bleibt gespeichert.

Was ist eine RGB-LED?

Eine RGB-LED ist eine LED, die in verschiedenen Farben leuchten kann. Hinter der Bezeichnung RGB stecken die Farben Rot, Grün und Blau. Im Inneren besteht die LED aus drei einzeln ansteuerbaren LEDs, die in diesen drei Farben leuchten. Deswegen hat eine RGB-LED auch so viele Beinchen, nämlich genau vier.

Das längste der vier Beinchen ist die gemeinsame Kathode (Common Cathode). Sie ist der Minuspol (GND). Die drei kürzeren Beinchen steuerst du über die digitalen Pins an – mit ihnen wählst du die einzelnen Farben.

Durch eine Mischung der Farben erzeugst du sehr viele weitere Farben. Steuerst du zum Beispiel Blau und Grün gleichzeitig an, entsteht Türkis.

Farbkreis mit den Mischfarben aus Rot, Grün und Blau
Farbspektrum der RGB-LED

Pulsweitenmodulation (PWM) verstehen

Mikrocontroller kennen an ihren digitalen Ausgängen nur „Spannung an“ oder „Spannung aus“. Damit du mit einer RGB-LED viele verschiedene Farben erzeugen kannst, musst du die einzelnen Farben aber feiner ansteuern. Dazu verwendest du die Pulsweitenmodulation (externer Link, abgerufen am 09.01.24).

Die PWM lässt die Spannung zwischen 5V und 0V pulsieren – sie wird also im Millisekundenbereich ein- und ausgeschaltet. Bei einer hohen PWM liegt das 5V-Signal nahezu durchgehend am Pin an, bei einer geringen PWM ist es kaum noch vorhanden. Damit erreichst du bei LEDs einen ähnlichen Effekt, wie wenn du die Spannung selbst veränderst.

Beim Arduino UNO funktioniert die PWM nur an den digitalen Pins, auf denen eine kleine Welle aufgedruckt ist. Bei den anderen Mikrocontrollern kannst du alle digitalen Pins verwenden.

Das hier ist eine sehr kompakte Zusammenfassung – wenn du tiefer einsteigen willst, lohnt sich weitere Lektüre zur Pulsweitenmodulation.

Arduino UNO mit markierten PWM-Pins, erkennbar am Wellensymbol
PWM-Pins sind am Arduino UNO mit einem Wellensymbol (~) gekennzeichnet

Drei einzelne Farben nacheinander

Pinbelegung Arduino UNO

LED 1Pin 5
LED 2Pin 7
Logikspannung5 V

Beim Arduino UNO schreibst du die Pin-Nummer direkt in den Sketch, also 5 und 7 ohne Zusatz.

Rot kommt an Pin 5, Grün an Pin 6 und Blau an Pin 3 – alle drei sind PWM-Pins.

Schaltplan mit RGB-LED an den Pins 3, 5 und 6 des Arduino UNO
Schaltplan: RGB-LED am Arduino UNO
Programmcode Einzelfarben – Arduino UNO
int LEDrot = 5;
int LEDgruen = 6;
int LEDblau = 3;
int Pause = 1000;      // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150;  // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
  pinMode(LEDblau, OUTPUT);
  pinMode(LEDgruen, OUTPUT);
  pinMode(LEDrot, OUTPUT);
}
void loop()
{
  analogWrite(LEDrot, Helligkeit);   // rot einschalten
  delay(Pause);                      // Pause
  analogWrite(LEDrot, LOW);          // rot ausschalten
  analogWrite(LEDgruen, Helligkeit); // gruen einschalten
  delay(Pause);                      // Pause
  analogWrite(LEDgruen, LOW);        // gruen ausschalten
  analogWrite(LEDblau, Helligkeit);  // blau einschalten
  delay(Pause);                      // Pause
  analogWrite(LEDblau, LOW);         // blau ausschalten
}

Download: programmcode-einzelfarben-arduino-uno.ino

Board in der Arduino IDEArduino Uno

Ein zusätzliches Board-Paket brauchst du dafür nicht. Der UNO ist in der Arduino IDE ab Werk dabei.

Farben mischen

Jetzt schaltest du jeweils zwei Farben gleichzeitig ein: Grün und Rot ergeben Gelb, Grün und Blau ergeben Türkis, Rot und Blau ergeben Lila.

Programmcode Farbmischung – Arduino UNO
int LEDrot = 5;
int LEDgruen = 6;
int LEDblau = 3;
int Pause = 1000;      // Pause von 1000 ms, also 1 Sekunde
int Helligkeit = 150;  // Zahlenwert zwischen 0 und 255 - gibt die Leuchtstärke der einzelnen Farbe an
void setup()
{
  pinMode(LEDblau, OUTPUT);
  pinMode(LEDgruen, OUTPUT);
  pinMode(LEDrot, OUTPUT);
}
void loop()
{
  // gruen und rot ein = gelb
  analogWrite(LEDgruen, Helligkeit);
  analogWrite(LEDrot, Helligkeit);
  delay(Pause);
  // gruen und rot aus = gelb aus
  analogWrite(LEDgruen, LOW);
  analogWrite(LEDrot, LOW);
  // gruen und blau ein = türkis
  analogWrite(LEDgruen, Helligkeit);
  analogWrite(LEDblau, Helligkeit);
  delay(Pause);
  // gruen und blau aus = türkis aus
  analogWrite(LEDgruen, LOW);
  analogWrite(LEDblau, LOW);
  // rot und blau ein = lila
  analogWrite(LEDrot, Helligkeit);
  analogWrite(LEDblau, Helligkeit);
  delay(Pause);
  // rot und blau aus = lila aus
  analogWrite(LEDrot, LOW);
  analogWrite(LEDblau, LOW);
}

Download: programmcode-farbmischung-arduino-uno.ino

Anleitung bewerten

Kommentare

Frage stellen oder Erfahrung teilen

Schreib uns, wenn etwas nicht funktioniert. Nenne dabei dein Board und die Fehlermeldung.

Wir prüfen jeden Kommentar vor der Veröffentlichung. Deine E-Mail-Adresse bleibt bei uns.