使用 Javascript 检测 PIR 传感器将值设置为 0 的时间长度

Detect for how long a value is set to 0 with a PIR sensor using Javascript

我正在使用 PIR 传感器检测环境中的运动。当有运动时,PIR 传感器会向控制台发送值 1。一旦检测到没有运动,它就会每秒通过 setInterval() 多次变为 0。现在在那个时间点我想检测 0 已经 0 多长时间然后在 10 分钟做一些事情。我正在考虑在运动开始时做一次 new Date().getMinutes();,然后在运动停止时再做一次,然后比较这两者。我在正确的轨道上吗?

我最终在 setInterval() 之外添加了一个 var i = 0;,在 if (myDigitalValue === 0) 循环中我一直保持 i++ 直到它达到我正在寻找的秒数以及何时它等于我 运行 一个方法。

(new Date()).getMinutes() 将 return 当前时间的 "minutes" 部分,即分针指向时钟的位置。您可能想要的是自特定点以来经过的绝对时间。幸运的是,有一种简单的方法可以确定日期对象(或其中两个)的时差:

begin = new Date();
. . . time passes . . .
end = new Date();
timeDiffInMilliseconds = end - begin;

换句话说,当您从一个 Date 对象中减去另一个对象时,您会得到以毫秒为单位的时间差(多态运算符万岁)。

这样做的一个好处是,如果您想更改测试的频率或时间长度,只需更改相关的即可。使用您描述的循环,两者不必要地捆绑在一起,这更容易出错。