Переключение вывода GPIO, установленного в качестве выхода


9

Я прочитал здесь, что я могу переключать состояние вывода GPIO, установленного для вывода в Python, с помощью следующей команды:

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

где LEDзначение пина Я могу включить светодиод, используя следующий код:

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

Но когда я пытаюсь GPIO.output(LED, not GPIO.input(LED)), выдается следующая ошибка.

RPi.GPIO.WrongDirectionException: канал GPIO не был установлен или настроен в неправильном направлении

Должен ли я настроить канал GPIO иначе, чем указано выше, или на сайте, на который я ссылаюсь, размещена неверная информация?

Ответы:


13

Вы не можете прочитать вывод. Просто сохраните состояние булавки в переменной.

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

Хотя указано иное, вы МОЖЕТЕ прочитать выходной сигнал, просто введя тот же вывод GPIO и получить возвращенное значение, которое вы только что установили:

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 

Действительно, вы можете прочитать выходной порт. Однако обратите внимание, что если вы сделаете это из другого процесса, а затем вызовете GPIO.cleanup (), это приведет к изменению состояния порта на ноль.
Диомидис Спинеллис
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.