传感器抖动,比如我们经常会用U型光电传感器计算速度,用轻触开关检测按压,用人体红外检测有无人活动等;通常中间会面临一个问题就是在while的检测周期内如何设定sleep时间,如何界定一次事件的触发以及由于手抖等其他因素导致的单位时间内多次触发事件的问题。这次实验就是通过边缘检测函数更好的解决抖动问题。
这次通过轻触开关传感器实验来验证解决问题。具体实验可参考先前文章:轻触开关传感器实验 。
其中下图红框内sleep时间设定通常会比较不好把握,设定时间长了容易错过事件的检测,设定时间过小表示检测的更频繁容易出现单次触发的时候 被多次检测,从而出现抖动的现象。
如下图可见单次按压出现多次提示预警:
接下来我们通过软件方式来解决这个抖动问题(硬件方式暂不讨论):
通过上图可见,首先拉高电压,然后我们使用边缘检测函数,设置一个电压下降检测事件(FALLING),然后在while内检测,当status为1时表示事件检测成功。其中bouncetime为防抖时间(单位毫秒),也可以理解为检测间隔时间,即在设定的时间内只检测一个边缘事件,从而达到单位时间内只有一个事件被触发。
防抖效果如下图,可见单次按压只会有一个检测触发预警:
参考资料: