Raspberry Pi Pico: Drehschalter / Rotary Encoder ansteuern (KY-040)
Auf den ersten Blick sieht ein Rotary Encoder, Drehwinkelgeber oder auch Drehschalter aus wie ein normales Potentiometer. Aber nein, genau genommen ist er ein kodierter Drehschalter bzw. ein rotierendes Eingabemodul.
Typischerweise eignet sich ein Rotary Encoder bzw. Drehschalter für die Navigation in Menüs, zum Einstellen von Lautstärke oder Geschwindigkeit.
Wir wollen einen Rotary Encoders vom Typ KY-040 einfach mal ausprobieren und herausfinden, wie er sich sinnvoll einsetzen lässt.
Aufbau und Bauteile
Raspberry Pi Pico | KY-040 | |
---|---|---|
Pin 36 | VCC +3,3V | + |
Pin 25 | GPIO 19 | CLK |
Pin 24 | GPIO 18 | DT |
Pin 23 | GND | GND |
Pin 22 | GPIO 17 | SW |
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 heruntergeladen und mit dem Dateinamen „rotary.py“ auf dem Raspberry Pi Pico gespeichert werden.
Programmcode
Die Bedienung ist vergleichsweise einfach. Das Programm zeigt in der Kommandozeile (Shell) die Drehrichtung und die aktuelle Wertestufe an. In beide Richtungen kann man hier praktisch unendlich drehen. Außerdem wertet die eingebundene Bibliothek auch noch die Betätigung und das Loslassen der Tasterfunktion aus.
# Bibliotheken laden from rotary import Rotary # GPIOs zum Rotary Encoder pin_dt = 18 pin_clk = 19 pin_sw = 17 # Initialiserung Rotary Encoder rotary = Rotary(pin_dt, pin_clk, pin_sw) value = 0 # Funktion def rotary_changed(change): global value if change == Rotary.ROT_CW: value = value + 1 print('Rechts (', value, ')') elif change == Rotary.ROT_CCW: value = value - 1 print('Links (', value, ')') elif change == Rotary.SW_PRESS: print('Gedrückt') elif change == Rotary.SW_RELEASE: print('Losgelassen') # Wenn der Encoder bedient wird rotary.add_handler(rotary_changed)
Darf es ein bisschen mehr sein?
Jetzt stellt sich noch die Frage, wie man einen Drehschalter sinnvoll einsetzen kann. Machen wir zuerst eine einfache Anwendung. Das Einstellen der Helligkeit einer LED. Los gehts.
Weitere verwandte Themen:
- Raspberry Pi Pico: Blink-Geschwindigkeit einer LED mit einem Rotary Encoder einstellen (KY-040)
- Raspberry Pi Pico: WS2812-Lauflicht-Geschwindigkeit mit Rotary Encoder einstellen (KY-040)
- Raspberry Pi Pico: Funktionsauswahl mit WS2812-RGB-LEDs und Rotary Encoder programmieren (KY-040)
- Raspberry Pi Pico: Servo-Motor SG90 mit Drehschalter KY-040 steuern
- Raspberry Pi Pico: 2-Achsen-Joystick ansteuern und Position auswerten (KY-023)
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)