12组+图文教程+ 人数统计

生活中经常利用光电开关检测对象接近和经过:
自动门、自动感应水龙头、自动烘干机……
而统计人数要用到的是红外对射式光电开关


应用红外对射式光电开关的自动售货机.gif

对射式光电开关由发射器和接收器组成,其工作原理是:通过发射器发出的光线直接进入接收器,当被检测物体经过发射器和接收器之间阻断光线时,光电开关就产生开关信号。当接收器接收到光线时输出为高电平,当光线被经过物体挡住时输出为低电平。
那么我们如何利用它来确定经过对象运动的方向呢?

使用两个红外对射式光电开关根据两个开关高低电平变化的时间顺序就可以确定经过对象的运动方向。

12组+图文教程+ 人数统计_第1张图片
演示.gif

如何利用经过对象的运动方向来计算空间内的人数呢?

利用两个红外感应开关确定对象的运动方向再根据运动方向从零加减运算。

程序代码如下:
12组+图文教程+ 人数统计_第2张图片
代码.png
程序运行顺序动画:
程序运行顺序动画.gif
分解动画:
12组+图文教程+ 人数统计_第3张图片
1.png

12组+图文教程+ 人数统计_第4张图片
2.png

12组+图文教程+ 人数统计_第5张图片
3.png

12组+图文教程+ 人数统计_第6张图片
4.png

如果有人调皮捣乱呢?


12组+图文教程+ 人数统计_第7张图片
捣乱.gif

如果有人捣乱的话,就会出现计数错误


捣乱程序运行动画.gif

经过观察可以发现,捣乱的原理是将state的值进行改变而导致的程序计数错误
正确计数重新开始的条件是state=0,那么如何将state及时变为0呢?

限制state值的改变时长

确认通过计数器的最大时长T

触发计数后超过T即将state赋值为0,以此来保证state值的稳定

12组+图文教程+ 人数统计_第8张图片
限制时长.JPG
限制时长后的动画效果:
限制时长.gif
分解动画:
12组+图文教程+ 人数统计_第9张图片
1.png

12组+图文教程+ 人数统计_第10张图片
2.png

12组+图文教程+ 人数统计_第11张图片
3.png

12组+图文教程+ 人数统计_第12张图片
4.png

12组+图文教程+ 人数统计_第13张图片
5.png

12组+图文教程+ 人数统计_第14张图片
6.png

12组+图文教程+ 人数统计_第15张图片
7.png

12组+图文教程+ 人数统计_第16张图片
8.png

12组+图文教程+ 人数统计_第17张图片
9.png

你可能感兴趣的:(12组+图文教程+ 人数统计)