Neben dem Ansteuern von LEDs gehört die Taster-Abfrage zu den wichtigsten GPIO-Grundlagen. In dieser Anleitung schließen wir einen Taster an einen Eingangs-GPIO-Pin an und lesen den Tastendruck mit Python aus.
Hinweis
Was benötigen wir?
| Produkt | Shop-Link |
|---|---|
| Raspberry Pi | Kauf-Empfehlung |
| Netzteil | Kauf-Empfehlung |
| Breadboard + Kabel | Kauf-Empfehlung |
| Taster-Set | Kauf-Empfehlung |
| Widerstandsset (optional) | Kauf-Empfehlung |
| LED-Set (optional) | Kauf-Empfehlung |
| Raspberry Pi Starter Set (Empfehlung) | Kauf-Empfehlung |
Benötigte Materialien (Affiliate-Links)
Ein Raspberry Pi Starter Set* enthält neben Tastern auch LEDs, Displays, Servos, Motoren, RFID-Kartenleser und vieles mehr.

Pull-Up und Pull-Down Widerstände
Pull-Up-Widerstände ziehen einen Pin auf logisch HIGH (1), Pull-Down-Widerstände auf logisch LOW (0). Sie verhindern undefinierte Zustände an offenen Eingängen.
Beim Raspberry Pi sind diese Widerstände intern in die GPIO-Pins integriert – sie müssen nicht extern aufgebaut werden. Die Konfiguration erfolgt direkt in der Software.
GPIO Zero installieren
GPIO Zero ist unter Raspberry Pi OS bereits vorinstalliert. Bei älteren Versionen:
sudo apt install python3-gpiozero Pin-Angabe für Taster
Mit der Button-Klasse aus GPIO Zero kann der Pin auf verschiedene Arten angegeben werden:
taster = Button(23)
taster = Button("GPIO23")
taster = Button("BCM23")
taster = Button("BOARD16") Tipp
Beispiel 1: Text bei Tastendruck ausgeben
Aufbau
Taster an GND und GPIO Pin 23 anschließen – kein externer Widerstand nötig.

Code
from gpiozero import Button
taster = Button(23)
while True:
if taster.is_pressed:
print("Taster ist gedrückt!")
else:
print("Taster ist nicht gedrückt!") Erklärung
Button(23) definiert den GPIO Pin 23 als Eingang und aktiviert automatisch den internen Pull-Up-Widerstand.
taster.is_pressed gibt True zurück, solange der Taster gedrückt ist. Die while True-Schleife fragt den Zustand kontinuierlich ab (Polling).

Beispiel 2: Auf Tastendruck warten
from gpiozero import Button
taster = Button(23)
print("Diese Zeilen werden beim Start ausgeführt")
taster.wait_for_press()
print("Diese Zeilen werden erst nach dem Tastendruck ausgeführt") wait_for_press() hält das Programm an dieser Stelle an. Alle nachfolgenden Befehle werden erst nach dem Tastendruck ausgeführt.

Beispiel 3: Funktion per Tastendruck starten
Code: Funktion beim Drücken
from gpiozero import Button
from signal import pause
def meine_funktion():
print("Hallo DigitaleWelt!")
taster = Button(23)
taster.when_pressed = meine_funktion
pause() Code: Funktion beim Loslassen
from gpiozero import Button
from signal import pause
def meine_funktion():
print("Bis später!")
taster = Button(23)
taster.when_released = meine_funktion
pause() Code: Drücken und Loslassen kombiniert
from gpiozero import Button
from signal import pause
def hallo_funktion():
print("Hallo DigitaleWelt!")
def tschau_funktion():
print("Bis später!")
taster = Button(23)
taster.when_pressed = hallo_funktion
taster.when_released = tschau_funktion
pause() when_pressed und when_released sind Event-Callbacks – deutlich effizienter als das kontinuierliche Abfragen per Polling in Beispiel 1. pause() hält das Programm am Laufen ohne CPU-Last.

Beispiel 4: LED mit Taster steuern
Aufbau
Zusätzlich zum Taster an GPIO 23 eine LED (mit 220-Ohm-Widerstand) an GPIO 17 anschließen. Wie die LED-Schaltung aufgebaut wird, ist im Artikel Raspberry Pi LED ansteuern beschrieben.
Code
from gpiozero import LED, Button
from signal import pause
rote_led = LED(17)
taster = Button(23)
taster.when_pressed = rote_led.on
taster.when_released = rote_led.off
pause() Alternative (noch kompakter)
from gpiozero import LED, Button
from signal import pause
rote_led = LED(17)
taster = Button(23)
rote_led.source = taster
pause() Mit rote_led.source = taster wird die LED direkt mit dem Taster verbunden – GPIO Zero übernimmt die gesamte Logik automatisch.