标题: 求助红外避障小车程序 [打印本页]

作者: zhangbiao    时间: 2011-6-16 16:29
标题: 求助红外避障小车程序

各位大师好,我现在遇到难题了,希望高手能帮忙指点解决一下,感激不尽,
我需要写避障循迹程序,端口分配大致是这样:

p1.2 右转方向信号
p1.5 左转方向信号
p1.3 左轮pwm调速信号
p1.4 右轮pwm调速信号
p0.0 左边红外避障传感器输入信号
p0.1 前边红外避障传感器输入信号
p0.2 右边红外避障传感器输入信号
p2.0----p2.7 为循迹传感器信号输入
共有16路用2个锁存器控制,只用p2口
实现功能:当左边传感器被触发小车右转
          当前边传感器被触发小车左转
          当右边传感器被触发小车左转
          当左、前边传感器被触发小车右转
          当右、前边传感器被触发小车左转
          当同时触发时,小车后退,直到左、右两侧传感器中的任意一个停止触发,小车停止倒退
 以上触发都是低电平有效
麻烦您指点一下避障的程序该怎么些,先谢谢你了


作者: zhangbiao    时间: 2011-7-3 09:04

我已解决此问题,特分享给大家,

我有三个传感器,分别装在左、前、右(z、q、y)

程序如下:

 

#include<reg51.h>   
  #define uint unsigned int   
  #define uchar unsigned char   
  sbit z=P0^0;//定义红外避障检测端口
  sbit q=P0^4;
  sbit y=P0^2;
  sbit mz=P1^5;//定义电机Mz电平输出端口
  sbit my=P1^2;//定义电机My电平输出端口
  void delay_ms(uint z);//声明延时函数


  main()//主函数
  {
   uint i=0;//初始值设定
   mz=1;
 my=1;
 while(1)//无限循环
 {             
  if(z==0&&q==1&&y==1)//表示z方有障碍物  进行y转向
  { 
   for(i=0;i<5;i++)
    {
   mz=1;
   my=0;
   delay_ms(100);//状态保持100ms
   mz=1;
   my=1;
   delay_ms(2);//状态保持2ms
   }
  }
  if(z==1&&q==0&&y==1)//表示前方有障碍物  进行y转向
  { 
   for(i=0;i<5;i++)
    {
   mz=1;
   my=0;
   delay_ms(100);//状态保持100ms
   mz=1;
   my=1;
   delay_ms(2);//状态保持2ms
   }
  }
  if(z==1&&q==1&&y==0)//表示y方有障碍物  进行z转向
  { 
   for(i=0;i<5;i++)
    {
   mz=0;
   my=1;
   delay_ms(100);//状态保持100ms
   mz=1;
   my=1;
   delay_ms(2);//状态保持2ms
   }
  }
  if(z==0&&q==0&&y==1)//表示z前方有障碍物  进行y转向
  { 
   for(i=0;i<5;i++)
    {
   mz=1;
   my=0;
   delay_ms(100);//状态保持100ms
   mz=1;
   my=1;
   delay_ms(2);//状态保持2ms
   }
  }
  if(z==1&&q==0&&y==0)//表示y前方有障碍物  进行z转向
  { 
   for(i=0;i<5;i++)
    {
   mz=0;
   my=1;
   delay_ms(100);//状态保持100ms
   mz=1;
   my=1;
   delay_ms(2);//状态保持2ms
   }
  }
  if(z==0&&q==0&&y==0)//表示前有障碍物  进行hou转向
  { 
   for(i=0;i<5;i++)
    {
   mz=0;
   my=0;
   delay_ms(100);//状态保持100ms
   mz=1;
   my=1;
   delay_ms(2);//状态保持2ms
   }
  }
  if(z==1&&q==1&&y==1)//表示前方无障碍物  直线行驶
  {
   mz=1;
   my=1;
   delay_ms(2);//状态保持2ms
  }
 }
  }

 


作者: zhenglei    时间: 2011-8-11 19:53

我也试运行一下


作者: shilihua0319    时间: 2012-3-20 18:03
红外电路是什么样的?
作者: 521000    时间: 2014-5-15 01:28
请问您的问题解决了吗,能否分享一下经验呢?新人在此谢过
作者: ailijan0087    时间: 2014-11-18 23:23
vrghdgd
作者: 1563257180    时间: 2016-3-27 19:27
就这么简单?

作者: idealize    时间: 2016-7-21 11:39
zhangbiao 发表于 2011-7-3 09:04
**** 作者被禁止或删除 内容自动屏蔽 ****

跪求大神 完整电路图
作者: better-me    时间: 2017-7-12 15:07
i是什么?距离吗?
作者: zm924024583    时间: 2018-5-20 14:08
你好,跪求电路图和程序
作者: chaseboy    时间: 2018-5-21 10:53
zhangbiao 发表于 2011-7-3 09:04
我已解决此问题,特分享给大家,
我有三个传感器,分别装在左、前、右(z、q、y)
程序如下:

楼主主函数少了个“}”
作者: 一曲相思    时间: 2019-3-31 18:00
电路图


作者: 一曲相思    时间: 2019-3-31 19:05
有没图
作者: qiaohw519    时间: 2019-4-6 17:30
也再了解红外避障小车的资料,学习了,谢谢分享




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1