Raspberry Pi Pico: GPIO als digitaler Eingang
Grundsätzlich kann man einen GPIO wahlweise als Eingang oder als Ausgang betreiben. Als digitaler Eingang kann er die Zustände „High“ und „Low“ bzw. „1“ und „0“ annehmen. Zum Beispiel von einem Schalter oder Taster, die den Eingang gegen Ground (GND) oder +VCC schalten.
Damit ein Eingang einen definierten Zustand hat, und nicht hin- und herschwingt, wird ein GPIO-Eingang über einen Widerstand mit +VCC oder GND verbunden. Dieser Pull-Up- oder Pull-Down-Widerstand lässt sich bei der Initialisierung eines GPIOs per Software definieren.
Aufbau und Bauteile

Programmcode: GPIO-Eingang mit internem Pull-Up-Widerstand
Der Programmcode liest kontinuierlich den Zustand eines GPIO-Eingangs ein und gibt ihn auf der Kommandozeile aus.
Der GPIO ist als Eingang mit internem Pull-Up-Widerstand konfiguriert. Ohne weitere Beschaltung ist der Grundzustand des Eingangs eine logische „1“. Durch eine Verbindung nach GND kann der Eingang den Zustand logisch „0“ annehmen.
# Bibliotheken laden
import machine
import time
# Initialisierung von GPIO16 als Eingang mit internem Pull-Up-Widerstand
gpio_in = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_UP)
# Funktion zur Taster-Auswertung
while True:
print(gpio_in.value())
time.sleep(1)
Programmcode: GPIO-Eingang mit internem Pull-Down-Widerstand
Der Programmcode liest kontinuierlich den Zustand eines GPIO-Eingangs ein und gibt ihn auf der Kommandozeile aus.
Der GPIO ist als Eingang mit internem Pull-Down-Widerstand konfiguriert. Ohne weitere Beschaltung ist der Grundzustand des Eingangs eine logische „0“. Durch eine Verbindung nach GND kann der Eingang den Zustand logisch „1“ annehmen.
# Bibliotheken laden
import machine
import time
# Initialisierung von GPIO16 als Eingang mit internem Pull-Down-Widerstand
gpio_in = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)
# Funktion zur Taster-Auswertung
while True:
print(gpio_in.value())
time.sleep(1)
Hinweis: Wegen eines Hardware-Fehlers beim RP2350 Revision A2 wechselt der GPIO nicht in jedem Fall in den Grundzustand „0“ zurück, wenn er mal den Zustand „1“ hatte. Das Problem muss mit einem externen Pull-Down-Widerstand kleiner oder gleich 8 kOhm gelöst werden. Mit dem RP2350 Revision A4 wurde das Problem behoben.
Programmcode: GPIO-Eingang ohne Widerstand
Der Programmcode liest kontinuierlich den Zustand eines GPIO-Eingangs ein und gibt ihn auf der Kommandozeile aus.
Da der GPIO-Eingang in diesem Beispiel ohne internen Pull-Down- oder Pull-Down-Widerstand konfiguriert ist, ist der Grundzustand des Eingangs unbestimmt. Vielleicht wird er eine Weile „0“ sein, wechselt ab und zu nach „1“, bleibt dort und wechselt wieder zurück. Provozieren kann man das, in dem man den Board-Pin mit dem Finger berührt oder ein Steckverbindungskabel einseitig am Pin einsteckt.
# Bibliotheken laden
import machine
import time
# Initialisierung von GPIO16 als Eingang ohne Widerstand
gpio_in = machine.Pin(16, machine.Pin.IN, pull=None)
# Funktion zur Taster-Auswertung
while True:
print(gpio_in.value())
time.sleep(1)
In der Regel bevorzugt man stabile Grundzustände, insbesondere bei offenen und unbeschalteten Eingängen. Deshalb empfiehlt es sich einen internen Widerstand zu aktivieren. Standardmäßig ist ein Pull-Down-Widerstand aktiviert, weshalb der Grundzustand dann logisch „0“ ist.
Weitere verwandte Themen:
- Raspberry Pi Pico: GPIO-Eingang beschalten
- Raspberry Pi Pico: GPIO-Eingang mit Taster beschalten und auswerten
- Raspberry Pi Pico: GPIO-Eingang - Taster entprellen
- Raspberry Pi Pico: GPIO-Eingang mit 5 Volt beschalten
- Raspberry Pi Pico: GPIO-Grundlagen
Elektronik-Sets für das Hardware-nahe Programmieren
Elektronik-Sets für das Hardware-nahe Programmieren
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.




