0

我正在使用树莓派、pi 脸和 python 脚本来监控多个家庭传感器。我想将烟雾探测器的感应线添加到该列表中,但我需要一些关于 if 语句的帮助。

我不确定如何告诉 if 语句来检查输入检测到信号的时间。在 4 秒内忽略(低电量啁啾),超过 4 秒(检测到烟雾)提醒我..

基本上我需要帮助编写下面的 if 语句。

if piface.digital_read(0)==0 >= 4 seconds:
    # do x 
else:
    # do y

我需要一个循环吗?它可以像上面那样简单吗?(当然编码正确!)

4

2 回答 2

1

像这样的东西(未经测试的伪代码):

counter = 0
while True: #your main loop
    smoke = digital_read() #assume 0 = no alarm, 1 = alarm
    if smoke:
        counter += 1
    else:
        counter = 0
    if counter >= 4: #there was smoke for the last 4 seconds
        call_the_fire_brigade()
    time.sleep(1) #wait one second

我猜你可能需要一些循环。

于 2013-09-17T20:19:42.757 回答
0

好吧,我认为一个好的解决方案是为每个检测器生成一个单独的线程,然后对带有循环的数字使用阻塞......就像

count = 0
while count < 4:
    if piface.digital_read(0) == 0:
        count += 1
    else: count = 0
    sleep(4000)
# ... rest of code ...
于 2013-09-17T20:23:05.663 回答