我有一个灰尘传感器,我必须测量 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)
)