错误制作一个使2个LED闪烁的python程序

时间:2018-07-05 11:00:16

标签: python-3.x raspberry-pi3 gpio

LED不闪烁,每次运行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 :(得分:0)

您是否尝试过在while循环中使用try / except / finally块来处理错误? (让我知道您是否不熟悉try / except / finally)。

这是一个例子,您可以看一下 http://raspi.tv/2013/rpi-gpio-basics-3-how-to-exit-gpio-programs-cleanly-avoid-warnings-and-protect-your-pi

祝你好运!

答案 1 :(得分:0)

这是因为GPIO引脚已在使用中。在此之前,它们是否已在另一个脚本中设置?每次使用后都应执行GPIO清理。正如@Tommi在回答中提到的,try / except / finally块对于随后触发清除很有用。这是一个示例,它是根据this site改编而成的。

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  

答案 2 :(得分:0)

我发现树莓派3B GPIO引脚不正确,我使用它们的地方说这是正确的,但不正确。因此,固定后,一盏灯闪烁,一盏灯持续亮着,但我都需要闪烁,我将进一步观察。