标题:
单片机用两个红外传感器检测人数的程序修改
[打印本页]
作者:
2500817625
时间:
2022-4-30 18:12
标题:
单片机用两个红外传感器检测人数的程序修改
求助大神帮忙改一下单片机程序,用两个红外传感器检测人数,现在是传感器1感应是进入,传感器2感应是出去,想改成传感器1先感应,传感器2后感应为进,传感器2先感应,传感器1后感应为出。求大神们帮忙。
while(1)
{
if(Left_P==0) // 如果左边的红外模块检测到有人
DelayMs(30);if(Right_P==0)
{
if(gJin<9999) // 判断当前进入人数是否小于9999
{
gJin++; // 进入人数加1
LcdGotoXY(0,3); // 光标定位
LcdPrintNum(gJin); // 显示进入的人数
LcdGotoXY(1,3); // 光标定位
gNow=gJin-gChu; // 计算当前人数
LcdPrintNum(gNow); // 显示当前人数
}
Buzzer_P=0; // 蜂鸣器嘀一声
DelayMs(30);
Buzzer_P=1;
while(!Left_P); // 等待人离开左边的传感器检测范围
DelayMs(100);
}
if(Right_P==0) // 如果右边的红外模块检测到有人
DelayMs(30);if(Left_P==0)
{
if(gChu<gJin) // 判断当前出去人数是否小于进入人数
{
gChu++; // 出去人数加1
LcdGotoXY(0,12); // 光标定位
LcdPrintNum(gChu); // 显示出去的人数
LcdGotoXY(1,3); // 光标定位
gNow=gJin-gChu; // 计算当前人数
LcdPrintNum(gNow); // 显示当前人数
}
Buzzer_P=0; // 蜂鸣器嘀一声
DelayMs(30);
Buzzer_P=1;
while(!Right_P); // 等待人离开右边的传感器检测范围
DelayMs(100);
}
AlarmJudge(); // 判断是否需要报警
KeyScanf(); // 按键扫描
}
}
作者:
wulin
时间:
2022-5-1 06:27
利用两个传感器信号的时差判断进出和数量
char count=初始人数;
void The_number()
{
static unsigned char sign_R=0,sign_L=0; //状态标志
//进入检测
if(Left_P && !Right_P && sign_R==0) //第一特征码
{
sign_R=1;
}
else if(!Left_P && !Right_P && sign_R==1)//第二特征码
{
sign_R=2;
}
else if(!Left_P && Right_P && traitA==2)//第三特征码
{
count++;
sign_R=3;
}
else if(Left_P && Right_P) //初始特征码
{
sign_R=0; //清0
}
//退出检测
if(!Left_P && Right_P && sign_L==0)//第一特征码
{
sign_L=1;
}
else if(!Left_P && !Right_P && sign_L==1)//第二特征码
{
sign_L=2;
}
else if(Left_P && !Right_P && sign_L==2)//第三特征码
{
count--;
sign_L=3;
}
else if(Left_P && Right_P) //初始特征码
{
sign_L=0; //清0
}
}
复制代码
作者:
2500817625
时间:
2022-5-1 11:51
wulin 发表于 2022-5-1 06:27
利用两个传感器信号的时差判断进出和数量
谢谢大神的指点,现在达到想要实现的效果了。万分感谢。
作者:
w1179benp
时间:
2022-5-1 16:44
这个听着像一个典型的“旋转编码一个方向加,反方向减”计数程序
作者:
远达大街呢
时间:
2023-2-7 23:05
楼主能发一下全部程序吗?想看
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1