Вимкнення шпильки 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.