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.
- Der GPIO-Eingang wird über den Taster gegen Ground (GND) geschaltet.
- Der GPIO-Eingang wird mit einem Pullup-Widerstand beschaltet und über den Taster gegen Ground (GND) geschaltet.
- Der GPIO-Eingang wird über den Taster gegen +3,3V (VCC) geschaltet.
- 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
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
- Raspberry Pi Pico: Taster-Zustand auswerten und mit einer LED anzeigen
- Raspberry Pi Pico: Taster-Zustand invertieren (Inverter-NICHT-Funktion)
- Raspberry Pi Pico: LED mit Taster ein- und ausschalten
- Raspberry Pi Pico: Alarmkontakt (Alarmanlage)
Weitere verwandte Themen:
- Raspberry Pi Pico: GPIO-Eingang beschalten
- Raspberry Pi Pico: GPIO-Eingang mit 5 Volt beschalten
- Raspberry Pi Pico: GPIO-Grundlagen
- Raspberry Pi Pico: GPIO-Belegung
- Elektronik mit dem Raspberry Pi Pico
Teilen:
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
Hardware-nahes 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)
Elektronik-Set Pico Edition
Raspberry Pi Pico: Hardware-nahes Programmieren mit MicroPython
Leichter Einstieg mit All-in-one-Set zum sofort Loslegen, um eigene Steuerungen programmieren.
Elektronik-Set Pico WLAN Edition
Raspberry Pi Pico W: IoT und Smart Home mit WLAN und MQTT
Betreibe Deinen Raspberry Pi Pico W als drahtloser Sensor in Deinem WLAN, versende E-Mails mit Daten und kommuniziere per MQTT im Internet of Things oder Smart Home.
Elektronik-Set Sensor Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Elektronik-Set mit den beliebtesten Sensoren zum Messen von Temperatur, Helligkeit, Bewegung, Lautstärke und Entfernung.
Elektronik-Set Eingabe Ausgabe Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Damit kannst Du MP3-Dateien abspielen, eine Stoppuhr bauen, einen Servo-Motor mit Drehschalter oder Joystick steuern, Lichteffekte mit einem WS2812-LED-Lichtstreifen erzeugen, Schalten mit einem Relais und Signalisieren mit einem Vibrationsmotor.