生活中经常利用光电开关检测对象接近和经过:
自动门、自动感应水龙头、自动烘干机……
而统计人数要用到的是红外对射式光电开关
对射式光电开关由发射器和接收器组成,其工作原理是:通过发射器发出的光线直接进入接收器,当被检测物体经过发射器和接收器之间阻断光线时,光电开关就产生开关信号。当接收器接收到光线时输出为高电平,当光线被经过物体挡住时输出为低电平。
那么我们如何利用它来确定经过对象运动的方向呢?
使用两个红外对射式光电开关根据两个开关高低电平变化的时间顺序就可以确定经过对象的运动方向。
如何利用经过对象的运动方向来计算空间内的人数呢?
利用两个红外感应开关确定对象的运动方向再根据运动方向从零加减运算。
程序代码如下:
程序运行顺序动画:
分解动画:
如果有人调皮捣乱呢?
如果有人捣乱的话,就会出现计数错误
经过观察可以发现,捣乱的原理是将state的值进行改变而导致的程序计数错误
正确计数重新开始的条件是state=0,那么如何将state及时变为0呢?