请教下关于两对红外对射传感器检测人的进出门的程序,不考虑

2019-07-15 09:51发布

不考虑并排的情况下,人的进或出(有连续进,连续出,一出一进,一进一出等情况,我写了一个程序,有连续进,一进一出,一出一进没问题,但连续出的情况就有问题了,求帮忙解决,先谢谢各位了
主要相关程序如下:
while (1) //这是主函数里的
{

if(HW1==1&&HW2==0)
{
// led6=0;
delay_ms(100);
if(HW1==1&&HW2==1)
{
HW1=0; //
// H21=0;
// led6=1;
HW2=0; //
// led7=1;
SendStringByUart3(youren);//发送指令
}
}
else if(HW1==0&&HW2==1)
{
HW1=0;
// led6=1;
HW2=0;
// led7=1;
// H21=1;
}


void INT0_int (void) interrupt INT0_VECTOR //红外对射开关1引起的中断0
{
HW1=1;
}


void INT1_int (void) interrupt INT1_VECTOR //红外对射开关2引起的中断1
{
HW2=1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
8958555647
2019-07-16 19:13
HARRY007 发表于 2017-8-18 08:02
检测人体进出用状态机的思想最好做了,状态的划分上你也要详细一下。假设X表示被档,O标志没被挡。
进门状态应该是:OO--XO--XX--OX--OO   出门从右往左看这个状态即可。如果进入状态以后任何的异常情况都应该退出状态。
另外你的红外传感检测靠谱吗?会不会出现多次标志位跳动的情况? ...

我用得红外对射,被阻挡光线就有信号,我也觉得用状态机最靠谱

一周热门 更多>