Umschalten eines als Ausgang eingestellten GPIO-Pins

9

Ich habe hier gelesen , dass ich den Status eines GPIO-Pins, der in Python ausgegeben werden soll, mit dem folgenden Befehl umschalten kann:

GPIO.output(LED, not GPIO.input(LED))

Wo LEDist der Pin-Wert? Ich kann die LED mit dem folgenden Code einschalten:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
LED = 17
GPIO.setup(LED,GPIO.OUT)
GPIO.output(LED,True)

Aber wenn ich es versuche GPIO.output(LED, not GPIO.input(LED)), wird der folgende Fehler ausgelöst.

RPi.GPIO.WrongDirectionException: Der GPIO-Kanal wurde nicht oder in die falsche Richtung eingerichtet

Soll ich den GPIO-Kanal anders als oben einrichten oder veröffentlicht die Site, auf die ich verwiesen habe, falsche Informationen?

Bobthechemist
quelle

Antworten:

13

Sie können eine Ausgabe nicht lesen. Speichern Sie einfach den Status des Pins in einer Variablen.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
LED = 17
ledState = False
GPIO.setup(LED,GPIO.OUT)

ledState = not ledState
GPIO.output(LED, ledState)
Gerben
quelle
8

Obwohl an anderer Stelle angegeben, KÖNNEN Sie eine Ausgabe lesen, indem Sie einfach denselben GPIO-Pin eingeben und den gerade zurückgegebenen Wert zurückerhalten:

GPIO.setup(LED_red, GPIO.OUT) #set Pin LED_red as aoutput

GPIO.output(LED_red, GPIO.HIGH) #set Pin LED_red = HIGH (ON)

GPIO.input(LED_red) returns 1 
user14486
quelle
In der Tat können Sie einen Ausgangsport lesen. Beachten Sie jedoch, dass, wenn Sie dies von einem anderen Prozess aus tun und dann GPIO.cleanup () aufrufen, der Status des Ports auf Null geändert wird.
Diomidis Spinellis