Raspberry Pi Pico: Farbsteuerung für RGB-LED programmieren

Eine RGB-LED ist ein einzelnes Bauteil, in Form einer LED, die in verschiedenen Farben leuchten kann. Die Abkürzung RGB steht für die Farben Rot, Grün und Blau. RGB bezeichnet ein Farbmodell, mit dem bestimmte Farbanteile angegeben werden. Aus den Farbanteilen der Grundfarben Rot, Grün und Blau mischt man beliebig andere Farben. Theoretisch lassen sich fast alle Lichtfarben darstellen.

Um aus den drei Grundfarben der RGB-LED eine andere Farbe zu erzeugen, müssen die Grundfarben in einer bestimmten Intensität leuchten und gemischt werden. Der Wertebereich für die Intensität der Grundfarben kann unterschiedlich festgelegt sein. In computerorientierten Anwendungen verwendet man häufig eine Ganzzahl zwischen 0 und maximal 255. Der Wertebereich umfasst somit 256 Werte, was sich binär in 8 Bit darstellen lässt oder abgekürzt in der hexadezimalen Darstellung. Der Farbanteil einer Grundfarbe entspricht dann einem zweistelligen Hexcode. Zusammen bilden alle drei Grundfarben einen sechsstelligen Hexcode für eine Farbe, in der die RGB-LED leuchten soll

Im folgenden Programmcode verwenden wir den sechsstelligen Hexcode für eine beliebige Farbe. Auf anderen Webseiten findest Du unzählige Tabellen mit Farben und dem dazugehörigen Hexcode.

Wir wollen hier herausfinden, was eine RGB-LED leisten kann und ob wir tatsächlich alle RGB-Farben erzeugen können.

Aufbau und Bauteile

Raspberry Pi Pico: Farbsteuerung für RGB-LED programmieren

  • LED1: RGB-LED
  • R1: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
  • R2: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
  • R3: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
Raspberry Pi Pico RGB-LED
Pin 17 GPIO 13 Anode R (über Widerstand)
Pin 18 GND Kathode
Pin 19 GPIO 14 Anode G (über Widerstand)
Pin 20 GPIO 15 Anode B (über Widerstand)

Eine RGB-LED hat 4 Anschlüsse, die zur Unterscheidung unterschiedlich lang sind. Der längste Anschluss ist die Kathode. Die drei anderen Anschlüsse sind jeweils der roten, grünen und blauen inneren LED zuständig.

Programmcode zum Testen

Eine RGB-LED hat 4 Anschlüsse, die zur Unterscheidung unterschiedlich lang sind. Der längste Anschluss ist die Kathode. Trotzdem kann man sich beim Verbinden mit den GPIOs mal vertun. Deshalb testen wird die Verdrahtung und die Funktion der RGB-LED mit einem kleinen Programm.

# Bibliotheken laden
from machine import Pin
from time import sleep

# Initialisierung der GPIOs
red = Pin(8, Pin.OUT, value=0)
green = Pin(7, Pin.OUT, value=0)
blue = Pin(6, Pin.OUT, value=0)

# Verdrahtung testen
# Wiederholung einleiten (Schleife)
while True:
    print('rot')
    red.on()
    sleep(2)
    red.off()
    print('green')
    green.on()
    sleep(2)
    green.off()
    print('blau')
    blue.on()
    sleep(2)
    blue.off()

Wenn die Grundfarben Rot, Grün und Blau nacheinander für jeweils 2 Sekunden leuchten, dann ist die RGB-LED richtig mit dem Pico verbunden und funktioniert korrekt.

Programmcode zur Farbsteuerung

Der Programmcode macht eigentlich nicht viel. Er lässt die RGB-LED in einer bestimmten Farbe leuchten. Die Festlegung der Farbe erfolgt über deren Hexcode, in dem der Farbanteil für Rot, Grün und Blau enthalten ist. Der 6-stellige Hexcode muss dazu nur in die entsprechende Variable eingetragen sein. Anschließend startet man dann den Programmcode.

# Bibliotheken laden
from machine import Pin, PWM
from time import sleep

# Farbe im RGB-Hexcode (6 Zeichen lang)
color = 'FF0000'
print('Hexcode der Farbe:', color)

# Farbanteile extrahieren
if (len(color) == 6):
    color_red = int(color[0].strip() + color[1].strip(), 16)
    print('Farbanteil Rot:', color_red)
    color_green = int(color[2].strip() + color[3].strip(), 16)
    print('Farbanteil Grün:', color_green)
    color_blue = int(color[4].strip() + color[5].strip(), 16)
    print('Farbanteil Blau:', color_blue)
else:
    print('Farbcode fehlerhaft!')
    exit

# Initialisierung für den roten Farbanteil
red = PWM(Pin(8))
red.freq(1000)
red.duty_u16(color_red * 256)

# Initialisierung für den grünen Farbanteil
green = PWM(Pin(7))
green.freq(1000)
green.duty_u16(color_green * 256)

# Initialisierung für den blauen Farbanteil
blue = PWM(Pin(6))
blue.freq(1000)
blue.duty_u16(color_blue * 256)

Experimente

Der Aufbau lädt zum Experimentieren ein.

Beispiele für gut sichtbare Farben:

  • Rot: FF0000 (Red)
  • Gelb: FFD700 (Gold)
  • Grün: 00FF00 (Lime)
  • Grün: 00FF33 (SpringGreen)
  • Blau: 00FFFF (Aqua)
  • Blau: 0000FF (Blue)
  • Blau: 191970 (MidnightBlue)
  • Pink: FF00FF (Magenta)
  • Weiß: FFFFFF (White)

Beobachtungen und Erklärungen

Es scheint nicht möglich zu sein, eine beliebige Farbe zu erzeugen. Wie gut oder auch schlecht es funktioniert, ist sicherlich auch vom LED-Typ abhängig.

Die Bezeichnung RGB-LED suggeriert, dass sie in fast jeder beliebigen Farbe leuchten kann. Das stimmt allerdings nicht. Man wird die drei Grundfarben Rot, Grün und Blau erzeugen können, sowie Weiß, Gelb, Pink und Türkis. In der Regel findet keine richtige Farbmischung statt. Es ist eher so, dass man die Farbanteile einzeln leuchten sieht.

Bei anderen Farben scheint die Leuchtintensität der einzelnen Grundfarben nicht stark genug sein. Die Farbwahrnehmung ist auch abhängig von der absoluten Helligkeit und erfordert eine bestimmte Mindestlichtmenge (Mindestanzahl an Photonen/Lichtteilchen). Wird diese unterschritten, dann hat der entsprechende Farbanteil keinen Einfluss auf das Mischungsverhältnis.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren