0

我有一个灰尘传感器,我必须测量 30 秒周期内的非活动时间总和。

对于 DigitalInputDevice gpiozero 提供了很酷的功能,我的意思是两个属性和两个回调:

  • 属性 - active_time(如果引脚处于活动状态或无,则返回浮点数)和 inactive_time(如果引脚处于非活动状态或无,则返回浮点数),
  • 回调 - when_activated 和 when_deactivated

我认为在这些回调中我可以访问前一个状态的数字输入,这将允许我在引脚将状态更改为非活动时获取活动时间,以及当引脚将状态更改为活动时获取非活动时间,但我错了。
所以我的问题是:当pin变为非活动状态时,这个库有没有可能抓住整个活动时间,反之亦然?

谢谢!

澄清:我想要的在下图中描述

图表 我的传感器文档的图像:https ://botland.com.pl/index.php?controller=attachment&id_attachment=1565

我现在这样做:

from gpiozero import DigitalInputDevice
from datetime import timedelta
import time


sensor_one_micrometer = DigitalInputDevice(20)
while True:
    active_time = 0
    inactive_time = 0

    sensor_one_micrometer.wait_for_active()
    while active_time + inactive_time < 30:
        watch_start = time.time()
        sensor_one_micrometer.wait_for_inactive()
        active_time += time.time() - watch_start
        watch_start = time.time()
        sensor_one_micrometer.wait_for_active()
        inactive_time += time.time() - watch_start
    percent = inactive_time/(active_time+inactive_time)
    print("Active Time: ",  active_time)
    print("Inactive Time: ", inactive_time)
    print(
        inactive_time/(active_time+inactive_time)
    )
4

0 回答 0