Raspberry Pi Pico: GPIO-Eingang mit Taster beschalten und auswerten

Ein Taster kann zwei Zustände haben: „gedrückt“ und „nicht gedrückt“. Entsprechend für „Ein“ und „Aus“. Die folgenden Programmbeispiele berücksichtigen verschiedene Szenarien in denen ein Taster gedrückt oder auch wieder losgelassen wird. Es geht also darum den Taster-Zustand auszuwerten.

Zu allem Überfluss gibt es 4 Möglichkeiten, wie man einen Taster mit dem Raspberry Pi Pico verbindet und wie der GPIO-Eingang initialisiert werden muss.

  1. Der GPIO-Eingang wird über den Taster gegen Ground (GND) geschaltet.
  2. Der GPIO-Eingang wird mit einem Pullup-Widerstand beschaltet und über den Taster gegen Ground (GND) geschaltet.
  3. Der GPIO-Eingang wird über den Taster gegen +3,3V (VCC) geschaltet.
  4. Der GPIO-Eingang wird mit einem Pulldown-Widerstand beschaltet und über den Taster gegen +3,3V (VCC) geschaltet.

Der Pullup- und Pulldown-Widerstand sorgen dafür, dass der GPIO-Eingang nicht unbeschaltet ist. Ein offener GPIO-Eingang kann einen beliebigen Zustand annehmen, was dazu führt, dass der Taster-Zustand falsch erkannt wird.

Wenn ein GPIO-Eingang mit Taster ohne Pullup- oder Pulldown-Widerstand beschaltet wird (1. und 3.), dann muss beim Initialisieren des GPIOs der Widerstand softwareseitig explizit gesetzt werden. Wenn ein Widerstand softwareseitig gesetzt und gleichzeitig der Eingang auch mit einem Widerstand beschaltet ist, dann verändern sich die physikalischen Bedingungen am GPIO-Eingang. Das ist in der Regel kein Problem, aber auch wenig sinnvoll.

Es geht beim folgenden Aufbau und Programmcode darum, alle 4 Möglichkeiten parallel aufzubauen und auszuprobieren. Es gilt dabei herauszufinden, was die Unterschiede sind.

Aufbau und Bauteile

Raspberry Pi Pico: GPIO-Eingang mit Taster beschalten und auswerten

Beim Verbinden der Verbindungskabel, Taster und Widerstände mit dem Raspberry Pi Pico muss darauf geachtet werden, dass kein Kurzschluss verursacht wird. Dieser Kurzschluss wirkt sich unter Umständen auf den USB des eigenen Computers aus. In der Regel wird kein Schaden entstehen. Trotzdem gilt hier der Hinweis, die Steckverbindungen sehr umsichtig vorzunehmen.

  • S1: Taster
  • S2: Taster
  • S3: Taster
  • S4: Taster
  • R1: Widerstand, 10 kOhm (Braun-Schwarz-Schwarz-Rot)
  • R2: Widerstand, 10 kOhm (Braun-Schwarz-Schwarz-Rot)

Programmcode

Im folgenden Programm werden insgesamt 4 Taster initialisiert. Das Drücken aller Taster bringt die LED zum Leuchten. Der Unterschiedlich liegt jeweils in der Beschaltung des GPIO-Eingangs und der dazu passenden Initialisierung.

# Bibliotheken laden
from machine import Pin

# Initialisierung von GPIO25 als Ausgang
led_onboard = Pin(25, Pin.OUT)
led_onboard.off()

# Initialisierung von GPIO17 als Eingang mit internem PULLUP-Widerstand (Taster S1)
btn1 = Pin(17, Pin.IN, Pin.PULL_UP)

# Initialisierung von GPIO16 als Eingang mit externem PULLUP-Widerstand (Taster S2)
btn2 = Pin(16, Pin.IN)

# Initialisierung von GPIO14 als Eingang mit internem PULLDOWN-Widerstand (Taster S3)
btn3 = Pin(14, Pin.IN, Pin.PULL_DOWN)

# Initialisierung von GPIO15 als Eingang mit externem PULLDOWN-Widerstand (Taster S4)
btn4 = Pin(15, Pin.IN)

# Funktion zur Taster-Auswertung
while True:
    if btn1.value() == 0:
        led_onboard.on()
    elif btn2.value() == 0:
        led_onboard.on()
    elif btn3.value() == 1:
        led_onboard.on()
    elif btn4.value() == 1:
        led_onboard.on()
    else:
        led_onboard.off()
  • Schaltet ein Taster den GPIO-Eingang gegen Ground (GND), dann entspricht das Schließen des Tasters dem Wert „0“.
  • Schaltet ein Taster den GPIO-Eingang gegen +3,3V (VCC), dann entspricht das Schließen des Tasters dem Wert „1“.

Beobachtungen und Erklärungen

Macht es eigentlich einen Unterschied, ob man einen Taster nach Ground (GND) oder nach +3,3V (VCC) schaltet? Beim Experimentieren ist es eigentlich egal. Es macht nur im Programmcode beim Initialisieren des GPIOs und der Auswertung von „0“ und „1“ einen Unterschied. In der praktischen Anwendung muss man dann sehen, was sinnvoller ist, um einen stabilen und fehlerfreien Betrieb zu gewährleisten.

Taster entprellen

Taster weisen ein seltsames Eigenleben auf. Nur einmal gedrückt und trotzdem lösen sie eine Funktion mehrfach aus. Das liegt daran, dass sie bei Betätigung prellen. Das Prellen bezeichnet einen mechanischen Vorgang, bei dem ein metallischer Kontakt durch Zurückfedern zwei oder sogar mehrfach öffnet und wieder schließt, bis er seine Endstellung erreicht hat. Beispielsweise geschlossen oder offen. Mehrfach mechanisch Öffnen und Schließen bedeutet aber auch, elektrisch Öffnen und Schließen. Wird das ausgewertet, dann wird eine Funktion mehrfach ausgeführt, was meistens nicht Sinn der Sache ist. Eine wichtige Maßnahme ist, den Taster oder Schalter zu entprellen. Das kann man softwareseitig realisieren.

Experimente mit Taster

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