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)
有人可以解决吗?
答案 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引脚不正确,我使用它们的地方说这是正确的,但不正确。因此,固定后,一盏灯闪烁,一盏灯持续亮着,但我都需要闪烁,我将进一步观察。