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: Drehschalter / Rotary Encoder ansteuern (KY-040)

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:

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