Bauteile · 5 Min. Lesezeit

RGB-LED verwenden: Farben mischen mit Arduino, gemeinsame Anode oder Kathode

Wie funktioniert eine RGB-LED und wie unterscheidet man gemeinsame Kathode und gemeinsame Anode? Anschluss am Arduino, Vorwiderstand pro Farbe, Farben mischen mit analogWrite, Regenbogen-Übergang, ESP32 und Pico.

Eine RGB-LED besteht aus drei einzelnen LEDs in einem Gehäuse: Rot, Grün und Blau. Stellst du die Helligkeit jeder Farbe einzeln ein, bekommst du fast jede gewünschte Farbe – von Gelb über Türkis bis Lila und Orange. Jedes Pixel auf einem Bildschirm funktioniert nach demselben Prinzip. Für Statusleuchten, Stimmungslampen und farbige Benachrichtigungen ist sie eines der spannendsten Arduino-Bauteile.

RGB-LED 5 mm mit 4 Beinchen
5-mm-RGB-LED: Das längste der vier Beinchen ist der gemeinsame Anschluss, die anderen drei sind die Kanäle Rot, Grün und Blau.

Wie funktioniert eine RGB-LED?

Lichtfarben mischen sich additiv: Rot und Grün zusammen ergeben für das Auge Gelb, Grün und Blau Türkis, Rot und Blau Lila (Magenta); leuchten alle drei, entsteht Weiß. Der Arduino stellt die Helligkeit jedes Kanals per PWM zwischen 0 und 255 ein. Theoretisch ergeben sich so 256 × 256 × 256 ≈ 16,7 Millionen Kombinationen. PWM schaltet die LED hunderte Male pro Sekunde ein und aus; das Auge sieht dieses Flackern nicht, sondern nur die mittlere Helligkeit.

FarbeRotGrünBlau
Rot25500
Grün02550
Blau00255
Gelb2552550
Türkis0255255
Lila (Magenta)2550255
Orange255800
Weiß255255255

Gemeinsame Kathode oder gemeinsame Anode?

Das längste der vier Beinchen ist der gemeinsame Anschluss der drei LEDs. Verbindet er ihre Kathoden, ist es eine LED mit gemeinsamer Kathode; verbindet er ihre Anoden, eine mit gemeinsamer Anode. Von außen sehen beide gleich aus, Anschluss und Code sind aber umgekehrt:

MerkmalGemeinsame Kathode (CC)Gemeinsame Anode (CA)
Langes Beinchen anGND5V
Um eine Farbe einzuschaltenPin auf HIGH (255)Pin auf LOW (0)
Wert im CodeanalogWrite(pin, wert)analogWrite(pin, 255 - wert)
Ganz aus0255
Um herauszufinden, welche du hast, verbinde das lange Beinchen mit GND und berühre mit einem anderen Beinchen über einen 220-Ω-Widerstand 5V. Leuchtet die Farbe, hat die LED eine gemeinsame Kathode. Wenn nicht, dreh es um: langes Beinchen an 5V, das andere über den Widerstand an GND; leuchtet sie jetzt, ist es eine gemeinsame Anode.

Pinreihenfolge und Anschluss am Arduino

Bei gängigen 5-mm-RGB-LEDs ist die Reihenfolge Rot, gemeinsam (längstes), Grün, Blau – sie kann aber je nach Hersteller abweichen, daher testest du am besten jedes Beinchen einzeln. Jede Farbe kommt über einen eigenen Widerstand an einen PWM-Pin. Beim Arduino Uno sind das die mit ~ markierten Pins 3, 5, 6, 9, 10 und 11.

BeinchenAnschlussArduino-Uno-Pin
Rot (R)Über einen WiderstandD9
Gemeinsam (längstes)Bei gemeinsamer Kathode GND, bei gemeinsamer Anode 5V—
Grün (G)Über einen WiderstandD10
Blau (B)Über einen WiderstandD11

Vorwiderstände berechnen: für jede Farbe einen eigenen

Jede Farbe braucht eine andere Spannung zum Leuchten (Flussspannung): Rot etwa 2,0 V, Grün und Blau 3,0–3,2 V. Für 20 mA an 5 V braucht Rot (5 − 2,0) / 0,020 = 150 Ω, Grün und Blau (5 − 3,2) / 0,020 ≈ 100 Ω. In der Praxis sind 220 Ω für alle drei sicher und trotzdem hell genug; die Farbbalance kannst du im Code ausgleichen. Eigene Werte berechnest du mit dem Rechner LED-Vorwiderstand, die Flussspannungen findest du in der Tabelle LED-Spannungen.

Setze keinen einzelnen Widerstand an das gemeinsame Beinchen. Der rote Kanal mit der niedrigsten Flussspannung zieht dann den Großteil des Stroms, die anderen Farben bleiben dunkel und die Mischungen stimmen nicht. Jeder Farbkanal braucht seinen eigenen Widerstand.

Farben mischen mit dem Arduino

Der folgende Code fasst die drei Kanäle in einer Funktion setColor() zusammen und zeigt nacheinander sieben Farben. Hat deine LED eine gemeinsame Anode, setzt du einfach COMMON_ANODE auf true; die Funktion kehrt die Werte selbst um.

Arduino (C++)
1const int R_PIN = 9;
2const int G_PIN = 10;
3const int B_PIN = 11;
4const bool COMMON_ANODE = false;   // ortak anotsa true yap / set true for common anode
5
6void setColor(int r, int g, int b) {
7  if (COMMON_ANODE) { r = 255 - r; g = 255 - g; b = 255 - b; }
8  analogWrite(R_PIN, r);
9  analogWrite(G_PIN, g);
10  analogWrite(B_PIN, b);
11}
12
13void setup() {
14  pinMode(R_PIN, OUTPUT);
15  pinMode(G_PIN, OUTPUT);
16  pinMode(B_PIN, OUTPUT);
17}
18
19void loop() {
20  setColor(255, 0, 0);     delay(1000);  // kırmızı / red
21  setColor(0, 255, 0);     delay(1000);  // yeşil / green
22  setColor(0, 0, 255);     delay(1000);  // mavi / blue
23  setColor(255, 255, 0);   delay(1000);  // sarı / yellow
24  setColor(0, 255, 255);   delay(1000);  // turkuaz / cyan
25  setColor(255, 0, 255);   delay(1000);  // mor / magenta
26  setColor(255, 255, 255); delay(1000);  // beyaz / white
27}

Sanfter Farbübergang: der Regenbogen-Effekt

Statt zwischen Farben zu springen, senkst du einen Kanal, während du einen anderen erhöhst – so fließt das Licht weich von Rot zu Grün, von Grün zu Blau und zurück zu Rot. Die Schleife unten nutzt dieselbe Funktion setColor(); mit dem delay-Wert stellst du die Geschwindigkeit ein.

Arduino (C++)
1// setColor() ve pin tanımları yukarıdaki gibi / setColor() and pins as above
2void loop() {
3  for (int i = 0; i < 256; i++) { setColor(255 - i, i, 0); delay(8); }  // kırmızı → yeşil / red → green
4  for (int i = 0; i < 256; i++) { setColor(0, 255 - i, i); delay(8); }  // yeşil → mavi / green → blue
5  for (int i = 0; i < 256; i++) { setColor(i, 0, 255 - i); delay(8); }  // mavi → kırmızı / blue → red
6}
Es ist normal, dass Weiß leicht bläulich oder rosa wirkt, weil die drei LEDs unterschiedlich hell sind. Skalierst du Grün und Blau im Code auf 70–80 %, wirkt das Weiß natürlicher. Ein Tischtennisball oder mattes Papier über der LED streut das Licht und mischt die Farben deutlich besser.

Farben mit Potentiometern wählen

Schließt du drei Potentiometer an A0, A1 und A2 an, wird jedes zum Drehknopf für einen Farbkanal. analogRead() liefert einen Wert von 0 bis 1023; geteilt durch 4 ergibt das den Bereich 0–255, den PWM erwartet. Wie man ein Potentiometer anschließt, erklärt Was ist ein Potentiometer?

Arduino (C++)
1// A0, A1, A2'de üç potansiyometre; setColor() yukarıdaki gibi
2// three pots on A0, A1, A2; setColor() as above
3void loop() {
4  int r = analogRead(A0) / 4;   // 0–1023 → 0–255
5  int g = analogRead(A1) / 4;
6  int b = analogRead(A2) / 4;
7  setColor(r, g, b);
8}

RGB-LED mit ESP32 und Raspberry Pi Pico

Am ESP32 funktioniert analogWrite() mit dem aktuellen Arduino-Core (3.x) an jedem Ausgangspin, der Code oben läuft also mit angepassten Pinnummern unverändert. Achten musst du nur auf die Spannung: Die Pins liefern 3,3 V, deshalb leuchten Grün und Blau, deren Flussspannung nahe 3 V liegt, schwächer. Nimm bei 3,3 V kleine Widerstände wie 47–100 Ω oder treibe die LED für viel Helligkeit über einen Transistor mit 5 V. Am Pico nimmt die PWM-Klasse von MicroPython Werte von 0 bis 65535:

MicroPython
1from machine import Pin, PWM
2import time
3
4pins = [PWM(Pin(n)) for n in (11, 12, 13)]   # GP11 R, GP12 G, GP13 B
5for p in pins:
6    p.freq(1000)
7
8def set_color(r, g, b):                       # 0–255
9    for p, v in zip(pins, (r, g, b)):
10        p.duty_u16(v * 257)                   # 0–65535 (ortak anotta 65535 - v * 257)
11
12while True:
13    set_color(255, 0, 0); time.sleep(1)       # kırmızı / red
14    set_color(0, 255, 0); time.sleep(1)       # yeşil / green
15    set_color(0, 0, 255); time.sleep(1)       # mavi / blue

Normale RGB-LED oder adressierbare LED (WS2812B)?

MerkmalNormale RGB-LEDWS2812B (NeoPixel)
Benötigte Pins3 PWM-Pins pro LED1 Datenpin für den ganzen Streifen
FarbsteuerungÜber die PWM-Ausgänge des ArduinoÜber einen winzigen Chip in jeder LED
BibliothekNicht nötigAdafruit NeoPixel oder FastLED
Geeignet für1–2 LEDs, StatusanzeigenStreifen, Ringe, Matrizen, Ambientebeleuchtung

Für ein oder zwei farbige Lichter ist die normale RGB-LED die einfachste und günstigste Lösung. Willst du Dutzende LEDs einzeln einfärben, reichen die 6 PWM-Pins des Uno nicht; dann wechselst du zu WS2812B-Streifen, die Hunderte LEDs über eine einzige Leitung steuern.

Projektideen mit RGB-LED

  • Stimmungslampe: den Regenbogen-Übergang in ein mattes Glas setzen und so ein sanftes Nachtlicht bauen.
  • Temperaturanzeige: mit einem DHT11 kombinieren – blau bei Kälte, grün bei angenehmer Temperatur, rot bei Hitze.
  • Farbmischer: mit drei Potentiometern jede Farbe von Hand einstellen.
  • Farbe per Handy wählen: mit einem ESP32 die Lampenfarbe über einen Farbwähler auf einer Webseite ändern.
  • Benachrichtigungslicht: bei neuer E-Mail oder Nachricht in einer bestimmten Farbe blinken.
  • Farben per Tastenfeld: je nach eingegebener Zahl eine andere Farbe zeigen.

Typische Fehler und ihre Lösungen

  • Die Farben verhalten sich umgekehrt: Du steuerst eine LED mit gemeinsamer Anode wie eine mit gemeinsamer Kathode an; setze COMMON_ANODE auf true.
  • Eine Farbe leuchtet nie: Die Pinreihenfolge ist vielleicht anders als erwartet; teste jedes Beinchen einzeln mit Widerstand.
  • Übergänge sind stufig, ohne Zwischentöne: Die LED hängt an einem Pin ohne PWM; beim Uno können diese Pins nur ganz an oder aus sein.
  • Farben spinnen, während ein Buzzer spielt: Beim Uno nutzt tone() Timer2 und stört PWM an den Pins 3 und 11; leg die RGB-LED auf Pins wie 5, 6, 9 und 10.
  • Ohne Widerstände: Zu viel Strom beschädigt mit der Zeit LED und Arduino-Pin.
  • Sehr dunkel am ESP32: Bei 3,3 V sind Grün und Blau am Limit; kleinere Widerstände oder einen Transistor verwenden.

Wenn du die LED-Grundlagen verstehen willst und wissen möchtest, warum sie Widerstände brauchen, lies Was ist eine LED? und Was ist ein Widerstand? In der BlueGrays-App findest du Projekte mit RGB-Farbübergang, tastengesteuerter Lampe und Farbmischer samt Schaltplänen und Code.

Häufige Fragen

Woran erkenne ich, ob meine RGB-LED eine gemeinsame Anode oder Kathode hat?

Verbinde das lange Beinchen mit GND und berühre mit einem anderen Beinchen über 220 Ω 5V; leuchtet es, ist es eine gemeinsame Kathode. Wenn nicht, lange Seite an 5V und das andere Beinchen über den Widerstand an GND; leuchtet es jetzt, ist es eine gemeinsame Anode. Der Diodentest eines Multimeters erledigt das ebenfalls.

Welchen Widerstand braucht eine RGB-LED?

An 5 V sind etwa 150 Ω für Rot und etwa 100 Ω für Grün und Blau ideal. Der Einfachheit halber sind 220 Ω für alle drei sicher und trotzdem hell genug. Ein eigener Widerstand pro Farbe ist Pflicht.

Wie viele Farben kann eine RGB-LED darstellen?

Jeder Kanal hat 256 Helligkeitsstufen von 0 bis 255, theoretisch also 16,7 Millionen Kombinationen. In der Praxis unterscheidet das Auge weniger Farben, und die Helligkeitsunterschiede der LEDs rücken manche Töne näher zusammen.

Warum leuchtet meine RGB-LED bläulich statt weiß?

Die drei LEDs sind unterschiedlich hell, und das Auge reagiert unterschiedlich empfindlich auf die Farben; meist dominieren Blau und Grün. Senke diese beiden Kanäle im Code etwas oder nimm dafür größere Widerstände, dann wird das Weiß neutraler.

Was passiert, wenn ich eine RGB-LED an einen Pin ohne PWM anschließe?

Dieser Kanal ist dann nur ganz an oder ganz aus; analogWrite wertet 128 und mehr als an, alles darunter als aus. Sind alle drei Kanäle so angeschlossen, bekommst du nur 8 Grundfarben und keine weichen Übergänge.

Wie viele RGB-LEDs kann ein Arduino Uno steuern?

Der Uno hat 6 PWM-Pins, damit lassen sich höchstens 2 RGB-LEDs mit unabhängigen Farben betreiben. Für mehr nimmst du einen 16-Kanal-PWM-Treiber wie den PCA9685 oder WS2812B-Streifen, die Hunderte LEDs über einen Pin steuern.

Alle Projekte ansehen
RGB-Led-Verwendung
#39Anfänger
Premium

RGB-Led-Verwendung

Grundlegendes Anwendungsprojekt, das nacheinander die roten, grünen und blauen Farben der RGB-LEDs aufblinken lässt. Lehrt die gemeinsame Kathoden-RGB-LED-Steuerung.

4.9(72)
96
Sanfte Farbübergänge mit RGB-Led
#40Anfänger
Premium

Sanfte Farbübergänge mit RGB-Led

Projekt, das einen sanften Regenbogeneffekt durch allmähliches Umschalten der Farben der RGB-LEDs mit analogWrite erzeugt. Lehrt die Logik der Farbmischung und der Übergangsanimation mit PWM.

4.8(58)
76
RGB-Led-Steuerung mit Tastenfeld
#95Mittel
Premium

RGB-Led-Steuerung mit Tastenfeld

Mit diesem Projekt können Sie die RGB-LED über die 4x4-Tastatur zwischen verschiedenen Modi und Farben steuern. Dank der millis()-Struktur werden die Befehle ohne Verzögerung verarbeitet. 🎮 Benutzerhandbuch: Taste A: Feste Geschwindigkeit Überblendeffekt. Taste B: Weicher Übergang mit einstellbarer Geschwindigkeit. C / D: Erhöht / Verringert die Geschwindigkeit des Effekts. 1 - 9: Schnelle Auswahl der Masterfarbe. * / #: Spezielle Zwischenfarben (Rosa, Hellgrün usw.). Taste 0: Schaltet da

5.0(32)
44
ESP32 RGB-LED-Steuerung
#111Anfänger
Premium

ESP32 RGB-LED-Steuerung

Unbegrenzte Farberzeugung mit einer einzigen RGB-LED anstelle von 3 separaten LEDs. Wie in Arduino machen wir Regenbogenübergänge, indem wir R/G/B-Werte mit analogWrite() setzen. Die Farbtheorie (z. B. Rot+Grün=Gelb) wird praktisch umgesetzt.

4.6(28)
50
ESP32-Farbmischerlampe (3 Potentiometer + RGB-LED + OLED)
#138Fortgeschritten
Premium

ESP32-Farbmischerlampe (3 Potentiometer + RGB-LED + OLED)

Eine intelligente Farbmischer-Lampe mit ESP32, die durch Drehen von drei Potentiometern die gewünschte Farbe mischt! Wenn Sie die Potentiometer für Rot, Grün und Blau drehen, ändert die RGB-LED mit gemeinsamer Kathode sofort ihre Farbe. Auf dem SSD1306-OLED-Display werden für jede Farbe Werte im Bereich von 0 bis 255, visuelle Füllbalken und der HEX-Webfarbcode (z. B. #FF8040) in Echtzeit angezeigt. Ein professionelles Mini-Farbstudio – vermittelt in einem einzigen Projekt Kenntnisse über die RG

4.7(6)
10
Raspberry Pi Pico RGB-LED Farbwechsel (3-Kanal-PWM, GP11-13)
#161Anfänger
Premium

Raspberry Pi Pico RGB-LED Farbwechsel (3-Kanal-PWM, GP11-13)

Eine LED, Millionen Farben! 🌈 Eine RGB-LED enthält 3 LEDs: Rot, Grün und Blau. Mit je einem PWM-Kanal des Pico mischst du Farben: Rot + Grün = Gelb, Grün + Blau = Cyan, alle drei = Weiß. Die LED wechselt durch 8 Farben. Lerne mehrere PWM-Kanäle, Funktionen (def), RGB-Farbmischung, 8-Bit → 16-Bit-Umrechnung (x257) und gemeinsame Kathode vs. Anode.

0.0(0)
6
Steuerung des ESP32 WS2812B NeoPixel-Streifens
#126Mittel
Premium

Steuerung des ESP32 WS2812B NeoPixel-Streifens

WS2812B (NeoPixel) adressierbare LEDs sind intelligente RGB-LEDs, die über einen einzigen Datenpin in Reihe geschaltet gesteuert werden können. In diesem Projekt werden wir einen WS2812B-Streifen mit 8 LEDs mithilfe der Adafruit_NeoPixel-Bibliothek steuern und eine fließende Regenbogenanimation erzeugen. Obwohl der 3,3-V-Logikpegel des ESP32 bei den meisten WS2812B-Bausteinen problemlos funktioniert, zeigen wir im Falle von Instabilität die Lösung mit einem 470-Ω-Reihenwiderstand und einem 1000-

4.9(19)
30
WS2812B Verwendung
#69Mittel
Premium

WS2812B Verwendung

Projekt zur Demonstration der grundlegenden Verwendung des adressierbaren LED-Streifens WS2812B durch unabhängige Einstellung der Farbe jeder LED. Lehrt die pixelbasierte Farbsteuerung mit der FastLED

4.8(54)
70

Lerne, wie eine RGB-LED mit drei LEDs in einem Gehäuse Millionen Farben erzeugt, wie du gemeinsame Anode und Kathode unterscheidest, die richtigen Widerstände wählst und Farben mit dem Arduino sanft überblendest.

RGB-LED verwenden: Farben mischen mit Arduino, gemeinsame Anode oder Kathode | BlueGrays