尝试创建一个计时器来暂停python中的循环

问题描述

在这里,我又把定时器和运动传感器弄得一团糟。

我有一个PIR运动传感器连接到树莓派。我想让运动传感器有一分钟的冷却时间,然后再次检查运动。我一直在搞一些线程...但是我认为我不需要它,并且想保持简单。

GPIO.setmode(GPIO.BCM)
PIR_PIN = 11
GPIO.setup(PIR_PIN,GPIO.IN)

motion_cooldown = 60
start = 0

while True:
    if(time.time() < start + motion_cooldown):
        print("cooldown")
    else: 
        if PIR_PIN == 1:
            print("motion detected")
            #do some stuff
            start = time.time()
        elif PIR_PIN == 0:
            print("no motion")
            #do some stuff
            start = 0         #reset start to 0 so the loop continues

我得到的当前错误是“'

解决方法

如果您没有调用该函数,即当您执行类似start = time.time的操作时很可能会发生这种情况,但是您的代码却没有这样做,并且该代码不可再现。要暂停循环,您可以在time.sleep(60)循环结束时使用while

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...