找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助红外避障小车程序

  [复制链接]
跳转到指定楼层
楼主
ID:29354 发表于 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 绝世好帖!

查看全部评分

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

使用道具 举报

沙发
ID:29354 发表于 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
  }
 }
  }

 

回复

使用道具 举报

板凳
ID:30241 发表于 2011-8-11 19:53 | 只看该作者

我也试运行一下

回复

使用道具 举报

地板
ID:35193 发表于 2012-3-20 18:03 | 只看该作者
红外电路是什么样的?
回复

使用道具 举报

5#
ID:61852 发表于 2014-5-15 01:28 | 只看该作者
请问您的问题解决了吗,能否分享一下经验呢?新人在此谢过
回复

使用道具 举报

6#
ID:69012 发表于 2014-11-18 23:23 | 只看该作者
vrghdgd
回复

使用道具 举报

7#
ID:110935 发表于 2016-3-27 19:27 | 只看该作者
就这么简单?
回复

使用道具 举报

8#
ID:81140 发表于 2016-7-21 11:39 | 只看该作者
zhangbiao 发表于 2011-7-3 09:04
**** 作者被禁止或删除 内容自动屏蔽 ****

跪求大神 完整电路图
回复

使用道具 举报

9#
ID:219079 发表于 2017-7-12 15:07 | 只看该作者
i是什么?距离吗?
回复

使用道具 举报

10#
ID:334186 发表于 2018-5-20 14:08 来自手机 | 只看该作者
你好,跪求电路图和程序
回复

使用道具 举报

11#
ID:334698 发表于 2018-5-21 10:53 | 只看该作者
zhangbiao 发表于 2011-7-3 09:04
我已解决此问题,特分享给大家,
我有三个传感器,分别装在左、前、右(z、q、y)
程序如下:

楼主主函数少了个“}”
回复

使用道具 举报

12#
ID:482433 发表于 2019-3-31 18:00 | 只看该作者
电路图

回复

使用道具 举报

13#
ID:482433 发表于 2019-3-31 19:05 | 只看该作者
有没图
回复

使用道具 举报

14#
ID:505803 发表于 2019-4-6 17:30 | 只看该作者
也再了解红外避障小车的资料,学习了,谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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