找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2073|回复: 4
打印 上一主题 下一主题
收起左侧

单片机用两个红外传感器检测人数的程序修改

[复制链接]
跳转到指定楼层
楼主
ID:976691 发表于 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();                                                                // 按键扫描                        
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2022-5-1 06:27 | 只看该作者
利用两个传感器信号的时差判断进出和数量
  1. char count=初始人数;

  2. void The_number()
  3. {
  4.         static unsigned char sign_R=0,sign_L=0;        //状态标志
  5.         //进入检测
  6.         if(Left_P && !Right_P && sign_R==0)          //第一特征码
  7.         {
  8.                 sign_R=1;
  9.         }
  10.         else if(!Left_P && !Right_P && sign_R==1)//第二特征码
  11.         {
  12.                 sign_R=2;
  13.         }
  14.         else if(!Left_P && Right_P && traitA==2)//第三特征码
  15.         {
  16.                 count++;
  17.                 sign_R=3;
  18.         }
  19.         else if(Left_P && Right_P)                //初始特征码
  20.         {
  21.                 sign_R=0;                                        //清0
  22.         }
  23.         //退出检测
  24.         if(!Left_P && Right_P && sign_L==0)//第一特征码
  25.         {
  26.                 sign_L=1;
  27.         }
  28.         else if(!Left_P && !Right_P && sign_L==1)//第二特征码
  29.         {
  30.                 sign_L=2;
  31.         }
  32.         else if(Left_P && !Right_P && sign_L==2)//第三特征码
  33.         {
  34.                 count--;
  35.                 sign_L=3;
  36.         }
  37.         else if(Left_P && Right_P)                //初始特征码
  38.         {
  39.                 sign_L=0;                                        //清0
  40.         }
  41. }
复制代码
回复

使用道具 举报

板凳
ID:976691 发表于 2022-5-1 11:51 | 只看该作者
wulin 发表于 2022-5-1 06:27
利用两个传感器信号的时差判断进出和数量

谢谢大神的指点,现在达到想要实现的效果了。万分感谢。
回复

使用道具 举报

地板
ID:149451 发表于 2022-5-1 16:44 | 只看该作者
这个听着像一个典型的“旋转编码一个方向加,反方向减”计数程序
回复

使用道具 举报

5#
ID:1062419 发表于 2023-2-7 23:05 来自手机 | 只看该作者
楼主能发一下全部程序吗?想看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表