Przełączanie zestawu pinów GPIO jako wyjścia

9

Przeczytałem tutaj, że mogę przełączać stan zestawu pinów GPIO do wyświetlania w Pythonie za pomocą następującego polecenia:

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

gdzie LEDjest wartość pinu. Mogę włączyć diodę LED za pomocą następującego kodu:

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

Ale kiedy próbuję GPIO.output(LED, not GPIO.input(LED)), pojawia się następujący błąd.

RPi.GPIO.WrongDirectionException: Kanał GPIO nie został skonfigurowany lub jest ustawiony w złym kierunku

Czy mam skonfigurować kanał GPIO inaczej niż powyżej, czy też witryna, do której się odwołuję, zamieszcza nieprawidłowe informacje?

bobthechemist
źródło

Odpowiedzi:

13

Nie można odczytać wyniku. Po prostu zapisz stan pinu w zmiennej.

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
źródło
8

Chociaż podano inaczej, MOŻESZ odczytać dane wyjściowe, po prostu wprowadzając ten sam pin GPIO i uzyskać wartość, którą właśnie podałeś:

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 
użytkownik14486
źródło
Rzeczywiście możesz odczytać port wyjściowy. Pamiętaj jednak, że jeśli zrobisz to z innego procesu, a następnie wywołasz GPIO.cleanup (), spowoduje to zmianę stanu portu na zero.
Diomidis Spinellis