Raspberry Pi Pico: WS2812 als Balkenanzeige mit Rotary Encoder manuell steuern (KY-040)

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.

Wenn auf der WS2812-Platine die RGB-LEDs hintereinander angeordnet sind, dann lässt sich das als Balkenanzeigen verwenden.
Ein Rotary Encoder bzw. Drehschalter dient zum Einstellen von Parameter und Werten.

In diesem Aufbau verwenden wir eine WS2812-Platine mit 8 RGB-LEDs als Balkenanzeige. Und Einen Rotary Encoder vom Typ KY-040 als Bedienelement, um die Anzahl der leuchtenden LEDs einzustellen.

Wenn das Dein erster Versuch mit einem Rotary Encoder vom Typ KY-040 ist, dann solltest Du Dich zuerst mit diesem Bauteil und seinen Besonderheiten vertraut machen. Außerdem empfiehlt es sich zuerst mit der Ansteuerung bzw. der Software-seitigen Auswertung des Rotary Encoders zu experimentieren und herauszufinden, was er leisten kann.

Aufbau und Bauteile

Raspberry Pi Pico: Drehschalter / Rotary Encoder ansteuern (KY-040)

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

Hinweis zur Stromversorgung: In der Regel verwendet man zur Stromversorgung der WS2812-RGB-LEDs 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.

Raspberry Pi Pico KY-040
Pin 23 GND GND
Pin 36 VCC +3,3V +
Pin 26 GPIO 20 SW
Pin 25 GPIO 19 CLK
Pin 24 GPIO 18 DT

Externe Bibliothek für den Drehschalter (Rotary Encoder)

Zur Software-seitigen Ansteuerung bzw. Auswertung des Drehschalter bzw. Rotary Encoders ist eine externe Bibliothek erforderlich, weil keine direkte Unterstützung in MicroPython vorgesehen ist. Die Bibliothek macht die Auswertung des Drehschalters im Programmcode spielend einfach. Dazu muss die Bibliothek in Form einer Datei auf den Raspberry Pi Pico gespeichert werden, damit die Einbindung im folgenden Programmcode funktioniert.

Programmcode

Die Unterstützung von NeoPixels ist in MicroPython bereits enthalten. Damit ist die Steuerung der WS2812-RGB-LEDs möglich.

Wenn das Programm gestartet wurde, dann leuchtet eine RGB-LED auf der WS2812-Platine. Wenn man den Regler nach Rechts dreht, dann gehen mehr LEDs an und nach Links wieder aus.

# Bibliotheken laden
from machine import Pin
from neopixel import NeoPixel
from rotary import Rotary

# 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)
for i in range (leds): np[i] = (0, 0, 0)

# GPIO-Pins für Encoder
pin_dt = 18
pin_clk = 19
pin_sw = 20

# Initialiserung Rotary Encoder
rotary = Rotary(pin_dt, pin_clk, pin_sw)

# Startposition
value = 1
np[value-1] = (brightness, brightness, brightness)
np.write()

# Funktion
def rotary_changed(change):
    global leds
    global brightness
    global value
    # LEDs zurücksetzen
    for i in range (leds): np[i] = (0, 0, 0)
    # Drehrichtung auswerten
    if change == Rotary.ROT_CW:
        value = value + 1
        print('Rechts (', value, ')')
    elif change == Rotary.ROT_CCW:
        value = value - 1
        print('Links (', value, ')')
    # Korrektur, wenn Anfang erreicht
    if value < 0: value = 0
    # Korrektur, wenn Ende erreicht
    if value >= leds: value = leds
    # LEDs einschalten
    for i in range (value): np[i] = (brightness, brightness, brightness)
    np.write()

# Wenn der Encoder bedient wird
rotary.add_handler(rotary_changed)

Darf es ein bisschen mehr sein?

Eine WS2812-Platine mit 8 RGB-LEDs kann man auch als Lauflicht verwenden. Und mit einem Rotary Encoder vom Typ KY-040 können wir die Geschwindigkeit des Lauflichts einstellen.

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