Ошибка программы Python, заставившей мигать 2 светодиода - PullRequest
0 голосов
/ 05 июля 2018

Светодиоды не мигают, и я получаю эту ошибку каждый раз, когда запускаю свою программу на python.

blink.py: 4: RuntimeWarning: этот канал уже используется, все равно продолжается. Используйте GPIO.setwarnings (False), чтобы отключить предупреждения. GPIO.setup (16, GPIO.OUT)

blink.py: 5: RuntimeWarning: этот канал уже используется, все равно продолжается. Используйте GPIO.setwarnings (False), чтобы отключить предупреждения. GPIO.setup (18, GPIO.OUT)

Я провел некоторое исследование проблемы, но ни одно из решений не сработало

import RPi.GPIO as GPIO
import time 
GPIO.setmode(GPIO.BCM)
GPIO.setup(16,GPIO.OUT)
GPIO.setup(18,GPIO.OUT)
while True: 
    GPIO.output(16, GPIO.HIGH)
    GPIO.output(18, GPIO.LOW)
    time.sleep(1)
    GPIO.output(16, GPIO.LOW)
    GPIO.output(18, GPIO.HIGH)
time.sleep(1)

У кого-нибудь есть решение?

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Это потому, что контакты GPIO уже используются. Они были настроены в другом сценарии до этого? Вы должны выполнять очистку GPIO после каждого использования. Как упомянул @Tommi в своем ответе, блок try / exception / finally полезен для последующего запуска очистки. Вот пример, демонстрирующий это, адаптированный с этого сайта .

import RPi.GPIO as GPIO
import time

# Consider calling GPIO.cleanup() first

GPIO.setmode(GPIO.BCM)
GPIO.setup(16,GPIO.OUT)
GPIO.setup(18,GPIO.OUT)

try:  
    # Your code here 
    while True: 
        GPIO.output(16, GPIO.HIGH)
        GPIO.output(18, GPIO.LOW)
        time.sleep(1)
        GPIO.output(16, GPIO.LOW)
        GPIO.output(18, GPIO.HIGH)
        time.sleep(1) # This line should be here so it is part of the while loop

except KeyboardInterrupt:  
    # Here you put any code you want to run before the program   
    # exits when you press CTRL+C  
    print("Keyboard interrupt")  

except:  
    # This catches ALL other exceptions including errors.  
    # You won't get any error messages for debugging  
    # so only use it once your code is working  
    print("Other error or exception occurred!")

finally:  
    GPIO.cleanup() # This ensures a clean exit  
0 голосов
/ 05 июля 2018

Я обнаружил, что контакты Raspberry Pi 3B GPIO не в порядке, место, где я их использовал, говорит, что оно в порядке, но это не так. Итак, после исправления один индикатор мигает, а один постоянно горит, но мне нужно, чтобы оба мигали, я посмотрю дальше.

0 голосов
/ 05 июля 2018

Вы пытались использовать блоки try / исключением / finally в цикле while для обработки ошибок? (Дайте мне знать, если попытка / за исключением / наконец вам незнакома).

Вот пример, на который вы можете взглянуть http://raspi.tv/2013/rpi-gpio-basics-3-how-to-exit-gpio-programs-cleanly-avoid-warnings-and-protect-your-pi

Удачи!

...