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:

Elektronik-Sets für das Hardware-nahe Programmieren

Elektronik-Sets für das Hardware-nahe Programmieren

Programmieren mit dem Raspberry Pi Pico
Online-Meeting

Programmieren mit dem Raspberry Pi Pico

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

Frag Elektronik-Kompendium.de