首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盆子-运行函数5秒

覆盆子-运行函数5秒
EN

Stack Overflow用户
提问于 2022-06-01 19:52:33
回答 1查看 216关注 0票数 0

我试图让我的覆盆子Pi闪烁一个LED 5秒,然后另一个5秒,以及。所以我有两个功能,一个是闪烁我的红色LED,另一个是蓝色的。我使用utime.sleep(0.5)作为函数,每半秒钟关闭一次LED。

代码语言:javascript
复制
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秒。

代码语言:javascript
复制
while True:
  blink_red()
  time.sleep(5)
  blink_blue()
  utime.sleep(5)

我需要修改代码的哪些部分,或者是否有更多的琵琶方法来实现?

编辑:我正在运行micropython。

EN

回答 1

Stack Overflow用户

发布于 2022-06-01 21:26:26

它打开红色引导5秒(蓝色关闭),然后打开蓝色5秒(而红色也关闭)。

听起来你的代码就像在做你要求它做的事情。

  1. 您的循环正在运行:

utime.sleep(5) blink_red() time.sleep(5) blink_blue()

  1. 当您调用blink_red()时,您切换红色LED (一旦) RED.toggle() #您关闭蓝色LED BLUE.value(0) #您等待0.5秒utime.sleep( 0.5 ) # ...and,然后返回主循环

现在又回到循环中了,然后调用time.sleep(5).

你看到这是怎么回事了吗?

如果您希望blink_red()将红色LED闪烁5秒,您将需要如下所示:

代码语言:javascript
复制
def blink_red():
    BLUE.off()
    for i in range(5):
        RED.toggle()
        utime.sleep(0.5)
        RED.toggle()
        utime.sleep(0.5)

您的while循环将如下所示:

代码语言:javascript
复制
while True:
  blink_red()
  blink_blue()

(假设您也重写了blink_blue。)

下面是一个完整的程序;我是在ESP C3上使用micropython运行这个程序的(因此,它的语法可能与Pi上的micropython略有不同,但应该基本相同):

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72467347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档