找回密码
 立即注册

QQ登录

只需一步,快速开始

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

自制的蓝牙避障小车程序

[复制链接]
跳转到指定楼层
楼主
ID:576900 发表于 2020-8-14 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码测试
  1. #include<reg51.h>
  2. #define uInt unsigned int
  3. #define A judgefollow=1
  4. #define B judgelefta=1;judgerighta=1
  5. #define C judgerightb=1;judgeleftb=1
  6. sbit switchfollow = P1^7;        //人体红外感应开关
  7. sbit switchredlight = P3^0;        //红外对管开关
  8. sbit switchfeellight = P3^1;        //光敏电阻开关
  9. sbit judgefollow = P1^6;         //人体红外感应
  10. sbit judgelefta = P1^4;              //左边红外对管
  11. sbit judgeleftb = P1^5;              //左边光敏电阻
  12. sbit judgerighta = P3^6;      //右边红外对管
  13. sbit judgerightb = P3^7;      //右边光敏电阻
  14. sbit in1 = P1^0;
  15. sbit in2 = P1^1;
  16. sbit in3 = P1^2;
  17. sbit in4 = P1^3;
  18. void DelayMS(uInt ValMS)
  19. {
  20.         uInt uiVal,ujVal;
  21.         for(uiVal=0;uiVal<ValMS;uiVal++)
  22.         for(ujVal=0;ujVal<113;ujVal++);
  23. }                           //延时函数
  24. void advance()           //前进
  25. {
  26.         in1 = 1;
  27.         in2 = 0;
  28.         in3 = 1;
  29.         in4 = 0;        
  30. }
  31. void back()                     //后退
  32. {
  33.         in1 = 0;
  34.         in2 = 1;
  35.         in3 = 0;
  36.         in4 = 1;
  37. }
  38. void right()                //右转
  39. {
  40.         in1 = 1;
  41.         in2 = 0;        //左轮向前
  42.         in3 = 0;        //右轮向后
  43.         in4 = 1;
  44. }
  45. void left()                                //左转
  46. {
  47.         in1 = 0;
  48.         in2 = 1;         //左轮向后
  49.         in3 = 1;         //右轮向前
  50.         in4 = 0;
  51. }
  52. void follow()
  53. {
  54.              //开始将所有感应接口都变为0   
  55.         if(judgefollow==0)    //再次确认感应
  56.         {   
  57.                 left();               
  58.                 DelayMS(1000);        //左转寻找感应
  59.                 if(judgefollow==1)   //发现感应
  60.                 {
  61.                         advance();           //前进
  62.                 }
  63.                 else                        //左转未发现感应
  64.                 {
  65.                         right();             // 右转
  66.                         if(judgefollow==1)     //发现感应
  67.                         advance();                 //前进,跟随目标
  68.                 }               
  69.         }        
  70. }
  71. void main()
  72. {
  73.           P1 = 0x00;
  74.             P3 = 0x00;        
  75.             if(switchfollow==1){A;}         //控制人体感应开关
  76.             if(switchredlight==1){B;}         //控制红外开关
  77.             if(switchfeellight==1){C;}   //控制光敏开关               
  78.             if(judgelefta==1&&judgeleftb==1&&judgerighta==1&&judgerightb==1&&judgefollow==1)  
  79.             {
  80.                             advance();
  81.             }                                                   //未发现感应,保持前进
  82.             else if(judgefollow==0)                   //感应到前方有人
  83.             {
  84.                             follow();                           //         跟随
  85.             }
  86.             else if(judgelefta==0||judgeleftb==0)
  87.             {
  88.                             back();
  89.                         DelayMS(1000);
  90.                         left();
  91.                         DelayMS(1000);
  92.                         advance();               
  93.             }                                           //        小车感应到右边有物体,进行左转
  94.              else if(judgerighta==0||judgerightb==0)
  95.             {
  96.                             back();
  97.                         DelayMS(1000);
  98.                         right();
  99.                         DelayMS(1000);
  100.                         advance();                //同上,但这次是右边
  101.             }
  102.              else if(judgerightb==0&&judgeleftb==0)           //小车进入黑暗中,开始后退
  103.             {
  104.                             back();
  105.                       if(judgeleftb==1)                         //发现左边有光
  106.                         {
  107.                                 left();                         //左转前进
  108.                                 DelayMS(1000);
  109.                                 advance();        
  110.                         }
  111.                          if(judgerightb==1)                         //发现右边有光
  112.                         {
  113.                                 right();                         //右转前进
  114.                                 DelayMS(1000);
  115.                                 advance();        
  116.                         }
  117.             }
  118.             else if(judgerighta==0&&judgelefta==0)  //正前方发现障碍                              
  119.             {
  120.                             back();                                    //后退
  121.                         DelayMS(1000);
  122.                         left();                                    //左转
  123.                         DelayMS(1000);
  124.                         advance();                                   //前进
  125.             }
  126. }
复制代码


避障小车.zip

78.38 KB, 下载次数: 9, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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