Den*_*189 7 python keyboardinterrupt raspberry-pi
我的代码使用raspberry pi时遇到问题.我刚开始使用python,所以我需要一些帮助.
这是代码:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
led1=22
led2=17
GPIO.setup(led1, GPIO.OUT)
GPIO.setup(led2, GPIO.OUT)
def blink():
GPIO.output(led1, 1)
time.sleep(1)
GPIO.output(led1, 0)
GPIO.output(led2, 1)
time.sleep(1)
GPIO.output(led2, 0)
while(blink):
blink()
try:
main()
except KeyboardInterrupt:
GPIO.cleanup()
Run Code Online (Sandbox Code Playgroud)
当我运行此错误时出现在控制台中:
RuntimeWarning:此频道已在使用中,无论如何都在继续.使用GPIO.setwarnings(False)禁用警告.GPIO.setup(led1,GPIO.OUT)和:
RuntimeWarning:此频道已在使用中,无论如何都在继续.使用GPIO.setwarnings(False)禁用警告.GPIO.setup(led2,GPIO.OUT)
如果我理解正确,该命令GPIO.cleanup()应重置GPIO端口的所有引脚并关闭LED.
但事实并非如此,其中一位领导仍然存在.
如何更改我的代码来解决此问题?
这里有一点帮助,如何有效地分离你的功能,并使它们更通用.虽然这是我提供的一个有效的Python脚本,但我没有在我的raspi上测试它,但我认为它会起作用 - 无论如何,让我知道是否有任何问题!
import RPi.GPIO as GPIO
import time
# Module level constants
LED1 = 22
LED2 = 17
# Sets up pins as outputs
def setup(*leds):
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
for led in leds:
GPIO.setup(led, GPIO.OUT)
GPIO.output(led, GPIO.LOW)
# Turn on and off the leds
def blink(*leds):
# Blink all leds passed
for led in leds:
GPIO.output(led, GPIO.HIGH)
time.sleep(1)
GPIO.output(led, GPIO.LOW)
if __name__ == '__main__':
# Setup leds
setup(LED1, LED2)
# Run blinking forever
try:
while True:
blink(LED1, LED2)
# Stop on Ctrl+C and clean up
except KeyboardInterrupt:
GPIO.cleanup()
Run Code Online (Sandbox Code Playgroud)
友好的推荐:
还有一个专用的Raspberry Pi StackExchange站点:https://raspberrypi.stackexchange.com/
您似乎没有包含main在您的问题中.但是,如果程序由于某些原因而退出,则可能会出现此问题KeyboardInterrupt.最好在finally块中释放资源
try:
main()
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
Run Code Online (Sandbox Code Playgroud)