Raspberry Pi Pico: WS2812-RGB-LEDs programmieren

RGB-LED-Module, -Platinen, -Streifen und -Bänder vom Typ WS2812 sind sehr beliebt, um Lichteffekte in verschiedenen Farben zu erzeugen. Dazu muss das RGB-LED-Modul mit einer Stromversorgung und einem Controller verbunden werden. Der Controller kümmert sich um die Lichteffekte.

Die Verbindung zwischen dem RGB-LED-Modul und dem Controller erfolgt über eine einzelne Datenleitung. Die Steuerung erfolgt mit einem asynchronen seriellen Protokoll.
Folgt man einigen Anleitungen zur Steuerung der WS2812-RGB-LEDs mit einem Raspberry Pi Pico, dann bedarf es in der Regel immer zusätzlicher Bibliotheken oder komplizierten Funktionen mit State-Machines mit Assembler-Code. Das muss nicht sein, denn in MicroPython ist die NeoPixel-Bibliothek enthalten, die sich zur Steuerung der WS2812-RGB-LEDs sehr gut eignet.

Hinweis zur Stromversorgung

Der Stromverbrauch des Moduls, der Platine oder des Bandes hängt davon ab, welche LEDs verbaut sind. Wir gehen hier vom Typ SMD 5050 aus (Größe 5 x 5 mm). Bei voller Helligkeit (Weiß) soll der Stromverbrauch bei ca. 60 mA pro LED liegen. Er kann aber auch deutlich darunter oder sogar darüber liegen.

Berechnung des gesamten Strombedarfs:

Berechnung des gesamten Strombedarfs

Bei einer WS2812-Platine mit 8 RGB-LEDs:

Berechnung des gesamten Strombedarfs einer WS2812-Platine mit 8 RGB-LEDs

Achtung, der Raspberry Pi Pico verbraucht in der Spitze ca. 20 mA, was dazugerechnet werden muss.

Das macht zusammen 500 mA bzw. 0,5 A.

In der Regel verwendet man zur Stromversorgung der WS2812-RGB-LED-Streifen ein eigenes Netzteil, etwa mit 5 Volt. In diesem Aufbau speisen wir den LED-Streifen mit den 5 Volt vom Pin 40 (VBUS). Wir greifen hier die 5 Volt direkt vom USB ab. Bei mehr oder längeren Streifen ist aber zwingend ein eigenes Netzteil erforderlich.

Hinweis: Der Stromverbrauch von einem Pico mit einem angeschlossenen LED-Streifen mit 8 LEDs, die in Weiß mit voller Helligkeit leuchteten, lag bei 300 mA. Das macht ungefähr 35 mA pro LED. Der Rest braucht der Pico.

Aufbau und Bauteile

Raspberry Pi Pico: WS2812-RGB-LEDs programmieren

Raspberry Pi Pico WS2812
Pin 40 VCC +5V VCC
Pin 38 GND GND
Pin 34 GPIO 28 DI / DIN
Pin 33 GND GND

Programmcode für MicroPython

Ein großer Vorteil ist, dass in MicroPython die Unterstützung von NeoPixels enthalten ist und somit keine externe Bibliothek gebraucht wird. Die Steuerung der WS2812-RGB-LEDs ist in MicroPython praktisch integriert.

Bevor der Programmcode einfach so gestartet wird, sollten 3 Dinge bedarfsweise eingestellt werden.

  • GPIO-Pin-Nummer (pin_np): Standard ist „28“, wenn man dem Aufbau folgt.
  • Anzahl der LEDs (leds): Wir verwenden hier ein WS2812-Modul mit 8 RGB-LEDs.
  • Helligkeit (brightness): Die Werte können zwischen 0 (aus) und 255 (volle Helligkeit) liegen.

Nach der Ausführung wird der Programmcode automatisch beendet. Die LEDs leuchten aber weiter.

# Bibliotheken laden
from machine import Pin
from neopixel import NeoPixel

# GPIO-Pin für WS2812
pin_np = 28

# Anzahl der LEDs
leds = 8

# Helligkeit: 0 bis 255
brightness = 10

# Initialisierung WS2812/NeoPixel
np = NeoPixel(Pin(pin_np, Pin.OUT), leds)

# Weiß
np[0] = (brightness, brightness, brightness)
# Rot
np[1] = (brightness, 0, 0)
# Grün
np[2] = (0, brightness, 0)
# Blau
np[3] = (0, 0, brightness)
# Gelb
np[4] = (brightness, brightness, 0)
# Pink
np[5] = (brightness, 0, brightness)
# Türkis
np[6] = (0, brightness, brightness)
# Aus
np[7] = (0, 0, 0)

# Farben ausgeben
np.write()

Letzte LED kaputt? Nein!

Dir ist vielleicht aufgefallen, dass eine der LEDs, die letzte, nicht leuchtet. Das hat einen einfachen Grund. Im Programmcode ist die Helligkeit der drei Grundfarben mit „0“ angegeben. Dieses Mischungsverhältnis entspricht der Farbe „Schwarz“. Da „Schwarz“ nicht leuchtet, leuchtet auch die LED nicht. Sie ist aus und NICHT kaputt.

Helligkeit der LEDs

Noch ein paar Worte zur Helligkeit der LEDs, dessen Wert im Programmcode in der Variable „brightness“ definiert ist.
Der Wert kann zwischen 0 (aus) und 255 (volle Helligkeit) liegen. Standardmäßig liegt dieser Wert hier bei „10“. Je nach Umgebungslicht, kann es sinnvoll sein, einen höheren Wert zu wählen. Aber, schon ein niedriger Wert ist in der Regel hell genug. Außerdem, je heller die LEDs leuchten bzw. je höher dieser Wert ist, desto höher ist auch der Stromverbrauch der LEDs.
Ein weiterer Aspekt ist der, dass schon bei einem mittleren Wert die LEDs unangenehm blenden können.

Programmcode für MMBasic

DIM b%(7) = (RGB(10,10,10), RGB(10,0,0), RGB(0,10,0), RGB(0,0,10), RGB(10,10,0), RGB(10,0,10), RGB(0,10,10), RGB(0,0,0))
SETPIN GP28, DOUT
BITBANG WS2812 O, GP28, 8, b%()

Darf es ein bisschen mehr sein?

Was kann man mit WS2812-RGB-LEDs alles machen? Ein paar Ideen zum Nachbauen.

Weitere verwandte Themen:

Teilen:

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

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Hardware-nahes Programmieren mit dem Raspberry Pi Pico

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

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen