Raspberry Pi Pico: Taster entprellen mit CircuitPython

Wenn Du einen Taster betätigst, dann führt das in der Regel zur Mehrfachausführung der damit verbundenen Funktion. Doch warum ist das so? Funktioniert das Programm nicht richtig? Nein. Das Problem sind die Taster. Die neigen zum Prellen. Beim Prellen schließt und öffnet sich die Kontaktstelle wegen der Mechanik sehr schnell mehrmals hintereinander.

In CircuitPython kann ein Taster-Zustand über einen digitalen Eingang abgefragt werden. Doch dieser digitale Eingang kann nicht entprellen. Darum muss sich der Programmierer selber kümmern. Die folgende Lösung kann man als Musterlösung ansehen, um den Zustand eines oder mehrerer Taster prellfrei auszuwerten.

Aufbau und Bauteile

Raspberry Pi Pico mit Taster-Modul KY-004

Der GPIO15 (Pin 20) und GPIO7 (Pin 10) sind deshalb gewählt, damit man ein Taster-Modul vom Typ KY-004 im Steckbrett so einstecken kann, dass man keine Verbindungskabel braucht. Beim Drücken der Taster wird der GPIO mit GND verbunden.

Programmcode für CirucuitPython

In der Endlos-Schleife werden der Zustand „gedrückt“ und „losgelassen“ ausgewertet. Der Zustand „gedrückt gehalten“ ist nicht berücksichtigt.

# Bibliotheken laden
import board
import keypad
import time

# Taster-Pins (bei Bedarf ergänzen)
BTN_PINS = ( board.GP15, )

# Taster initialisieren (mit Pullup-Widerstand)
buttons = keypad.Keys(BTN_PINS, value_when_pressed=False, pull=True)

# Wiederholung: Endlos-Schleife
while True:
    time.sleep(0.1)
    event = buttons.events.get()
    # Wenn ein Ereignis eintritt
    if event:
        #print(event)
        if event.pressed:
            print('Gedrückt:', event.key_number)
        if event.released:
            print('Losgelassen:', event.key_number)

Der Programmcode ist so konzipiert, dass sich gleich mehrere Taster auf einmal initialisieren und entprellen lassen. Die GPIO-Pins, an denen die Taster angeschlossen sind, sind im Array BTN_PINS definiert. Sie sind mit einem Komma zu trennen.
Im folgenden Programmcode ist zusätzlich die Auswertung der Taster an den unterschiedlichen GPIOs berücksichtigt.

# Bibliotheken laden
import board
import keypad
import time

# Taster-Pins (bei Bedarf ergänzen)
BTN_PINS = ( board.GP15, board.GP11, )

# Taster initialisieren (mit Pullup-Widerstand)
buttons = keypad.Keys(BTN_PINS, value_when_pressed=False, pull=True)

# Wiederholung: Endlos-Schleife
while True:
    time.sleep(0.1)
    event = buttons.events.get()
    # Wenn ein Ereignis eintritt
    if event:
        #print(event)
        if event.pressed and event.key_number == 0:
            print('Taster an GPIO 15')
        if event.pressed and event.key_number == 1:
            print('Taster an GPIO 11')

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