单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 21838|回复: 13
收起左侧

求助红外避障小车程序

  [复制链接]
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口
实现功能:当左边传感器被触发小车右转
          当前边传感器被触发小车左转
          当右边传感器被触发小车左转
          当左、前边传感器被触发小车右转
          当右、前边传感器被触发小车左转
          当同时触发时,小车后退,直到左、右两侧传感器中的任意一个停止触发,小车停止倒退
 以上触发都是低电平有效
麻烦您指点一下避障的程序该怎么些,先谢谢你了

评分

参与人数 1黑币 +3 收起 理由
idealize + 3 绝世好帖!

查看全部评分

 楼主| 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是什么?距离吗?
10#
无效楼层,该帖已经被删除
11#
无效楼层,该帖已经被删除
zm924024583 发表于 2018-5-20 14:08 来自手机 | 显示全部楼层
你好,跪求电路图和程序
chaseboy 发表于 2018-5-21 10:53 | 显示全部楼层
zhangbiao 发表于 2011-7-3 09:04
我已解决此问题,特分享给大家,
我有三个传感器,分别装在左、前、右(z、q、y)
程序如下:

楼主主函数少了个“}”
14#
无效楼层,该帖已经被删除
一曲相思 发表于 2019-3-31 18:00 | 显示全部楼层
电路图

一曲相思 发表于 2019-3-31 19:05 | 显示全部楼层
有没图
qiaohw519 发表于 2019-4-6 17:30 | 显示全部楼层
也再了解红外避障小车的资料,学习了,谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 必胜时时彩开户-金盾时时彩-ba娱乐时时彩平台

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