小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
12
返回列表 发新帖
楼主: yunhan

求帮改!

[复制链接]
发表于 2015-1-13 22:14:09 | 显示全部楼层
  1. #include "motor.h"
  2. #include "uart.h"
  3. #include "timer.h"

  4. bit Cruising_Flag =0;
  5. uchar  Robots_Run_Status;
  6. bit Pre_Cruising_Flag = 0;
  7. /**电机初始化**/
  8. void Motor_Init(void)
  9. {
  10.         MOTOR_A_EN=1;
  11.         MOTOR_B_EN=1;
  12.         MOTOR_GO_STOP;
  13. }

  14. void Cruising_Mod(void)
  15. {
  16.       
  17.          if(Pre_Cruising_Flag != Cruising_Flag)//自动巡航模式和非巡航模式切换
  18.          {
  19.              if(Pre_Cruising_Flag != 0)
  20.                  {
  21.                      MOTOR_GO_STOP;
  22.                  }

  23.              Pre_Cruising_Flag =  Cruising_Flag;
  24.          }         
  25.         // Cruising_Flag=1;        //for test
  26.          if(1 == Cruising_Flag)
  27.          {
  28.              switch(Robots_Run_Status)
  29.                  {
  30.                         case 0x01:MOTOR_GO_RIGHT;     break;    //状态偏左
  31.                         case 0x02:MOTOR_GO_LEFT;     break;            //状态偏右
  32.                         case 0x03:MOTOR_GO_FORWARD;  break;            //直行状态
  33.                         case 0x04:MOTOR_GO_STOP;  break;                //停止状态
  34.                  }


  35.                            if((Input_Detect0 == 0)&& (Input_Detect2 == 0))
  36.                         {
  37.                                //左右两侧均未检测到障碍物
  38.                                  Robots_Run_Status=0x03;
  39.                         }
  40.                        
  41.                         if((Input_Detect0 == 0)&& (Input_Detect2 == 1))
  42.                         {
  43.                               //右侧检测到障碍物
  44.                                 MOTOR_GO_LEFT;
  45.                                 Delay_Ms(1000);
  46.                                 MOTOR_GO_FORWARD;
  47.                                 Delay_Ms(3000);
  48.                                 MOTOR_GO_RIGHT;
  49.                                 Delay_Ms(1000);
  50.                                 Robots_Run_Status=0x03;
  51.                         }
  52.                        
  53.                         if((Input_Detect0 == 1)&& (Input_Detect2 == 0))
  54.                         {
  55.                                  //左侧检测到障碍物
  56.                                 MOTOR_GO_RIGHT;
  57.                                 Delay_Ms(1000);
  58.                                 MOTOR_GO_FORWARD;
  59.                                 Delay_Ms(3000);
  60.                                 MOTOR_GO_LEFT;
  61.                                 Delay_Ms(1000);
  62.                                 Robots_Run_Status=0x03;
  63.                         }
  64.                        
  65.                         if((Input_Detect0 == 1)&& (Input_Detect2 == 1))
  66.                         {
  67.                                 //两边都检测到了障碍物,停止
  68.                                 Robots_Run_Status=0x04;
  69.                         }
  70.                  
  71.          }
  72. }






复制代码

由于电机无法精确控制转动的角度,因此估算了一个1秒的转动时间,如果转角不够或过多,那么自己适当增加延时。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-14 09:53:47 | 显示全部楼层
liuviking 发表于 2015-1-13 22:14
由于电机无法精确控制转动的角度,因此估算了一个1秒的转动时间,如果转角不够或过多,那么自己适当增加 ...

我测试过了,左右红外发射模块没反应,电机不停转动!
回复 支持 反对

使用道具 举报

发表于 2015-1-14 20:48:36 | 显示全部楼层
yunhan 发表于 2015-1-14 09:53
我测试过了,左右红外发射模块没反应,电机不停转动!

你看代码的原理,就是切换过去后,就不停地转动,直到两边同时探测到障碍物才停下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-14 22:29:59 | 显示全部楼层
liuviking 发表于 2015-1-14 20:48
你看代码的原理,就是切换过去后,就不停地转动,直到两边同时探测到障碍物才停下。

我试过了,两个红外避障模块遇到障碍物两个马达还在转动。今天我测试了键盘连接驱动板P1.7和P1.5接口。我按了一下,两个马达不会停的。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-23 00:29 , Processed in 1.084868 second(s), 18 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

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