gpt4 book ai didi

python - 带有 GPIO.setup 和 GPIO.cleanup 的 RuntimeWarnings 不适用于 KeyboardInterrupt

转载 作者:太空狗 更新时间:2023-10-29 21:19:53 27 4
gpt4 key购买 nike

我的代码在使用 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()

当我运行这个错误出现在控制台:

RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings. GPIO.setup(led1, GPIO.OUT) and:

RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings. GPIO.setup(led2, GPIO.OUT)

如果我理解正确,命令 GPIO.cleanup() 应该重置 GPIO 端口的所有引脚并关闭 LED。

但这并没有发生,事实上其中一个 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()

友情推荐:

还有一个专门的 Raspberry Pi StackExchange 站点:https://raspberrypi.stackexchange.com/

关于python - 带有 GPIO.setup 和 GPIO.cleanup 的 RuntimeWarnings 不适用于 KeyboardInterrupt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com