Attivazione / disattivazione di un pin GPIO impostato come output


9

Ho letto qui che potrei attivare / disattivare lo stato di un pin GPIO impostato su Python usando il seguente comando:

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

dove LEDè il valore pin. Posso accendere il LED usando il seguente codice:

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

Ma quando provo GPIO.output(LED, not GPIO.input(LED)), viene generato il seguente errore.

RPi.GPIO.WrongDirectionException: il canale GPIO non è stato impostato o è impostato nella direzione sbagliata

Devo impostare il canale GPIO in modo diverso da quello sopra o il sito a cui ho fatto riferimento pubblica informazioni errate?

Risposte:


13

Non puoi leggere un risultato. Basta memorizzare lo stato del pin in una variabile.

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)

8

Sebbene indicato altrove, puoi leggere un output semplicemente inserendo lo stesso pin GPIO e ottenere il valore restituito che hai appena impostato prima:

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 

In effetti puoi leggere una porta di output. Tuttavia nota che se lo fai da un processo diverso e poi chiami GPIO.cleanup (), questo porterà lo stato di cambio della porta a zero.
Diomidis Spinellis il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.