Das General Purpose Input Output System des Raspberry Pi hat 17 Datenleitungen (Rev.B board: 26), die individuell als Eingang (Input) oder Ausgang (Output) definiert werden können. Es gibt im Modul RPi_GPIO zwei Nummerierungsarten für die Pfostenstifte: Standardmässig werden die Pin-Nummern 1..26 verwendet (Rev.B board: 1..40). Alternativ kann eine Nummerierung 0..16 (Rev.B board: 0..25) mit fortlaufenden Pins auf der einen und dann auf der anderen Seite des Pfostensteckers verwendet werden (Mode: LINE). In beiden Fällen werden die Ein- bzw. Ausgänge als channels bezeichnet.
![]() |
Das Programm muss als Root User (mit Supervisor Rechten) laufen, damit es auf das GPIO-System zugreifen kann!
Das API ist weitgehend kompatibel zum Python-Modul RPi.GPIO, so dass es einfach ist, Programme zu portieren.
Methode | Aktion |
GPIO.BOARD |
Konstante für setmode(): Channel-Nummerierung mit Pfostennummern (default). Wert: 0 |
GPIO.LINE | Konstante für setmode(): Channel-Nummerierung in Reihe für 26-pin Stecker. Wert: 1 |
GPIO.LINE40 | Konstante für setmode(): Channel-Nummerierung in Reihe für 40-pin Stecker. Wert: 2 |
GPIO.OUT | Konstante für setup(): Ausgangs-Channel. Wert: 0 |
GPIO.IN | Konstante für setup(): Eingangs-Channel. Wert: 1 |
GPIO.LOW | Logikpegel tief, entprechend 0V. Wert: 0 |
GPIO.HIGH | Logigpegel hoch, entsprechend 3.3V. Wert: 1 |
GPIO.PUD_DOWN | Konstante füf setup(): Interner Pulldown-Widerstand. Wert: 2 |
GPIO.PUD_UP | Konstante füf setup(): Interner Pullup-Widerstand. Wert: 3 |
GPIO.PUD_NONE | Konstante füf setup(): Kein interner Widerstand (floating). Wert: 4 |
GPIO.RISING | Konstante für add_event_detect(): Triggerevent auf steigender Flanke |
GPIO.FALLING | Konstante für add_event_detect(): Triggerevent auf fallender Flanke |
GPIO.BOTH | Konstante für add_event_detect(): Triggerevent auf beiden Flanken |
GPIO.setmode(mode) | wählt den Channel-Nummerierungsmodus: BOARD oder LINE |
GPIO.setup(channel, ioControl, option) | wählt den Channel als Ein- oder Ausgang. Ausgang: option HIGH/LOW setzt Initialisierungswert; Eingang: option PUD_UP, PUD_DOWN, PUD_NONE wählt internen Pullup/down-Widerstand |
GPIO.cleanup() | gibt alle Ressourcen frei und setzt Standardwerte |
GPIO.out(channel, state) | setzt den Zustand eines Ausgangs-Channels |
GPIO.input(channel) | liefert den Zustand eines Input-Channels (für Ausgangs-Channels den aktuell gesetzten Wert) |
GPIO.add_event_detect(channel, trigger) | bereitet den Channel für Trigger-Events vor und wählt die Triggerflanke (RISING, FALLING, BOTH) |
GPIO.add_event_callback(channel, callback, bounceTime) | registriert für den Channel eine Callbackfunktion. Nach einem Triggerevent sind weitere Events während der bounceTime (in ms) inaktiv. Die Callbackfunktion hat die Signatur callback(channel, state) mit dem aktuellen Channel und seinem Zustand |
GPIO.add_event_callback(channel, callback) | dasselbe mit bounceTime = 0 |
GPIO.wait_for_edge(channel, trigger) | wartet endlos auf einen Triggerevent, so wie er mit add_event_detect() definiert wurde |
GPIO.wait_for_edge(channel, trigger, timeout) | wartet die maximale Zeit timeout (in ms) auf einen Triggerevent. Gibt 0 zurück, falls während dieser Zeit ein Event erfolgt, sonst wird -1 zurückgegeben |
GPIO.event_detected(channel) | gibt True zurück, falls ein mit add_event_detect() vorbereiteter Trigger seit dem letzten Aufruf eingetreten ist |
GPIO.getVersion() | gibt die aktuelle Version als String zurück |
p = GPIO.PWM(channel, freq, duty) | erzeugt und startet einen Pulse-Width-Modulation Generator mit geg. Frequenz (1..500 Hz) und geg. duty cycle (0...100 %). Gibt eine Referenz auf PWM zurück |
p = GPIO.PWM(channel, freq) | erzeugt einen Pulse-Width-Modulation Generator mit geg. Frequenz (1..500 Hz), startet ihn aber nicht (duty = 0).. Gibt eine Referenz auf PWM zurück |
p.start(duty) | startet oder setzt den PWM mit geg. duty cycle (0..100 %) |
p.changeDutyCycle(duty) | startet oder setzt den PWM mit geg. duty cycle (0..100 %) |
p.stop() | stoppt den PWM (setzt duty = 0) |
GPIO.delay(ms) | hält den Prozess während ms Millisekunden an |