Raspberry Pi Pico: WS2812-Lauflicht-Geschwindigkeit mit Rotary Encoder einstellen (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.
In diesem Aufbau verwenden wir eine WS2812-Platine mit 8 RGB-LEDs als Lauflicht. Und einen Rotary Encoder vom Typ KY-040 verwenden wir, um die Geschwindigkeit des Lauflichts 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.
- Mehr Informationen zum KY-040 - Drehschalter (Rotary Encoder)
- Drehschalter / Rotary Encoder ansteuern (KY-040)
Aufbau und Bauteile
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 22 | GPIO 17 | SW |
Pin 25 | GPIO 19 | CLK |
Pin 24 | GPIO 18 | DT |
Schnell und einfach alle Bauteile zusammen bestellen
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 läuft das Lauflicht los. Durch Drehen des Rotary Encoders kann die Geschwindigkeit eingestellt werden.
# Bibliotheken laden from machine import Pin from neopixel import NeoPixel from rotary import Rotary from time import sleep_ms # GPIO-Pin für WS2812 pin_np = 28 # Anzahl der LEDs leds = 8 # Helligkeit: 0 bis 255 brightness = 10 # Geschwindigkeit (Millisekunden) speed = 100 # Initialisierung WS2812/NeoPixel np = NeoPixel(Pin(pin_np, Pin.OUT), leds) # GPIO-Pins für Encoder pin_dt = 18 pin_clk = 19 pin_sw = 17 # Initialiserung Rotary Encoder rotary = Rotary(pin_dt, pin_clk, pin_sw) for i in range (leds): np[i] = (0, 0, 0) # Funktion def rotary_changed(change): global speed if change == Rotary.ROT_CW: speed = speed - 5 elif change == Rotary.ROT_CCW: speed = speed + 5 # Korrektur, wenn Ende erreicht if speed < 5: speed = 5 # Korrektur, wenn Anfang erreicht if speed > 500: speed = 500 print(speed) # Wenn der Encoder bedient wird rotary.add_handler(rotary_changed) # Wiederholung (Endlos-Schleife) while True: for i in range (leds): # Nächste LED einschalten np[i] = (brightness, brightness, brightness) np.write() sleep_ms(speed) # LED zurücksetzen np[i] = (0, 0, 0)
Darf es ein bisschen mehr sein?
Ein WS2812-Modul kannst Du auch als Balken-Anzeige verwenden. Zum Beispiel für eine Funktionsauswahl, die dann durch Drücken auf den Drehschalter bestätigt oder ausgelöst wird.
Weitere verwandte Themen:
- Raspberry Pi Pico: WS2812 als Lauflicht programmieren
- Raspberry Pi Pico: WS2812 als Balkenanzeige programmieren
- Raspberry Pi Pico: Helligkeit einer LED mit einem Rotary Encoder einstellen (KY-040)
- Raspberry Pi Pico: Blink-Geschwindigkeit einer LED mit einem Rotary Encoder einstellen (KY-040)
- Raspberry Pi Pico: WS2812 als Balkenanzeige mit Rotary Encoder manuell steuern (KY-040)
- Raspberry Pi Pico: Servo-Motor SG90 mit Drehschalter KY-040 steuern
Frag Elektronik-Kompendium.de
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
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: 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.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)