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

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条回答
cwliu1989
1楼-- · 2019-07-16 12:28
连续进和连续出的程序不是倒过来吗?连续进可以的话连续出也应该没问题吧
李春明
2楼-- · 2019-07-16 12:53
8958555647 发表于 2017-8-18 23:17
不符合项目要求

好的   期待你的资料分享
8958555647
3楼-- · 2019-07-16 17:59
战胜心魔 发表于 2017-8-19 09:53
你可以去找找自动冲水马桶电路

这个只是检测有没人的吧?不是人进出的情况
8958555647
4楼-- · 2019-07-16 19:13
HARRY007 发表于 2017-8-18 08:02
检测人体进出用状态机的思想最好做了,状态的划分上你也要详细一下。假设X表示被档,O标志没被挡。
进门状态应该是:OO--XO--XX--OX--OO   出门从右往左看这个状态即可。如果进入状态以后任何的异常情况都应该退出状态。
另外你的红外传感检测靠谱吗?会不会出现多次标志位跳动的情况? ...

我用得红外对射,被阻挡光线就有信号,我也觉得用状态机最靠谱
8958555647
5楼-- · 2019-07-16 22:07
 精彩回答 2  元偷偷看……
8958555647
6楼-- · 2019-07-17 03:30
王栋春 发表于 2017-8-19 18:47
好的   期待你的资料分享

算是解决了,用的延时,强行把第一次出门留下1号传感器标志清零了,就是不太严谨,项目到最后一步,出现了其他新问题,就是进门时会引起10秒的警报(用的delay,for循环延时),在这10秒内再次触发传感器(引起外部中断),会造成死机,往后在触发也没反应了,我已经在这10秒延时前关掉外部中断使能了(ex0=0),也还是这样,反而串口中断啥事都没有,好郁闷,请问下这是什么原因?

一周热门 更多>