我试图让我的覆盆子Pi闪烁一个LED 5秒,然后另一个5秒,以及。所以我有两个功能,一个是闪烁我的红色LED,另一个是蓝色的。我使用utime.sleep(0.5)作为函数,每半秒钟关闭一次LED。
def blink_red():
RED.toggle()
BLUE.value(0)
utime.sleep(0.5)
def blink_blue():
BLUE.toggle()
RED.value(0)
utime.sleep(0.5)对于代码的执行,我使用了utime.sleep(5),希望每个函数运行5秒,但是它不会使LED闪烁。它使红色开启了5秒,蓝色启动了5秒。
while True:
blink_red()
time.sleep(5)
blink_blue()
utime.sleep(5)我需要修改代码的哪些部分,或者是否有更多的琵琶方法来实现?
编辑:我正在运行micropython。
发布于 2022-06-01 21:26:26
它打开红色引导5秒(蓝色关闭),然后打开蓝色5秒(而红色也关闭)。
听起来你的代码就像在做你要求它做的事情。
utime.sleep(5) blink_red() time.sleep(5) blink_blue()
blink_red()时,您切换红色LED (一旦) RED.toggle() #您关闭蓝色LED BLUE.value(0) #您等待0.5秒utime.sleep( 0.5 ) # ...and,然后返回主循环现在又回到循环中了,然后调用time.sleep(5).
你看到这是怎么回事了吗?
如果您希望blink_red()将红色LED闪烁5秒,您将需要如下所示:
def blink_red():
BLUE.off()
for i in range(5):
RED.toggle()
utime.sleep(0.5)
RED.toggle()
utime.sleep(0.5)您的while循环将如下所示:
while True:
blink_red()
blink_blue()(假设您也重写了blink_blue。)
下面是一个完整的程序;我是在ESP C3上使用micropython运行这个程序的(因此,它的语法可能与Pi上的micropython略有不同,但应该基本相同):
try:
import time
except ImportError:
import utime as time
from machine import Pin
RED = Pin(3, Pin.OUT)
BLUE = Pin(5, Pin.OUT)
PINS = [RED, BLUE]
def blink_pin(pin):
for i in range(5):
pin.on()
time.sleep(0.5)
pin.off()
time.sleep(0.5)
# ensure everything is off to start
for pin in PINS:
pin.off()
while True:
blink_pin(RED)
blink_pin(BLUE)https://stackoverflow.com/questions/72467347
复制相似问题