Alternando um pino GPIO definido como saída

9

Eu li aqui que eu poderia alternar o estado de um pino GPIO definido para saída em Python usando o seguinte comando:

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

onde LEDé o valor do pino. Posso ligar o LED usando o seguinte código:

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

Mas quando tento GPIO.output(LED, not GPIO.input(LED)), o seguinte erro é lançado.

RPi.GPIO.WrongDirectionException: o canal GPIO não foi configurado ou está configurado na direção errada

Devo configurar o canal GPIO de forma diferente da acima ou o site ao qual eu referenciei está postando informações incorretas?

bobthechemist
fonte

Respostas:

13

Você não pode ler uma saída. Apenas armazene o estado do pino em uma variável.

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
fonte
8

Embora declarado em outro lugar, você PODE ler uma saída inserindo apenas o mesmo pino GPIO e obter o valor retornado que você definiu antes:

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
fonte
Na verdade, você pode ler uma porta de saída. No entanto, observe que, se você fizer isso de um processo diferente e chamar GPIO.cleanup (), isso resultará na alteração do estado da porta para zero.
Diomidis Spinellis 12/03