Basculement d'un jeu de broches GPIO en sortie

9

J'ai lu ici que je pouvais basculer l'état d'un ensemble de broches GPIO pour sortir en Python en utilisant la commande suivante:

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

LEDest la valeur de la broche. Je peux allumer la LED en utilisant le code suivant:

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

Mais quand j'essaye GPIO.output(LED, not GPIO.input(LED)), l'erreur suivante est levée.

RPi.GPIO.WrongDirectionException: le canal GPIO n'a pas été configuré ou est configuré dans la mauvaise direction

Suis-je censé configurer le canal GPIO différemment de ce qui précède ou le site auquel j'ai fait référence affiche-t-il des informations incorrectes?

bobthechemist
la source

Réponses:

13

Vous ne pouvez pas lire une sortie. Enregistrez simplement l'état de la broche dans une 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
la source
8

Bien qu'indiqué ailleurs, vous POUVEZ lire une sortie en entrant simplement la même broche GPIO et obtenir la valeur que vous venez de définir avant:

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
la source
En effet, vous pouvez lire un port de sortie. Cependant, notez que si vous effectuez cette opération à partir d'un processus différent et que vous appelez ensuite GPIO.cleanup (), cela entraînera la modification de l'état du port à zéro.
Diomidis Spinellis