Alternar un pin GPIO configurado como salida

9

Leí aquí que podía alternar el estado de un pin GPIO configurado para salir en Python usando el siguiente comando:

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

donde LEDes el valor del pin Puedo encender el LED usando el siguiente código:

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

Pero cuando lo intento GPIO.output(LED, not GPIO.input(LED)), se produce el siguiente error.

RPi.GPIO.WrongDirectionException: el canal GPIO no se ha configurado o está configurado en la dirección incorrecta

¿Se supone que debo configurar el canal GPIO de manera diferente a la anterior o el sitio al que hice referencia publica información incorrecta?

bobthechemist
fuente

Respuestas:

13

No puedes leer una salida. Simplemente almacene el estado del pin en una variable.

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

Aunque se indica en otra parte, PUEDE leer una salida simplemente ingresando el mismo pin GPIO y obtener el valor devuelto que acaba de establecer 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 
usuario14486
fuente
De hecho, puede leer un puerto de salida. Sin embargo, tenga en cuenta que si lo hace desde un proceso diferente y luego llama a GPIO.cleanup (), esto hará que el puerto cambie de estado a cero.
Diomidis Spinellis