红外避障小车Word格式文档下载.docx
- 文档编号:21877869
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:40
- 大小:622.89KB
红外避障小车Word格式文档下载.docx
《红外避障小车Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《红外避障小车Word格式文档下载.docx(40页珍藏版)》请在冰豆网上搜索。
//定义I2接口
intspeedpin=11;
//定义EA(PWM调速)接口
intpinI3=6;
//定义I3接口
intpinI4=7;
//定义I4接口
intspeedpin1=10;
//定义EB(PWM调速)接口
voidsetup()
{
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpin,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedpin1,OUTPUT);
}
voidloop()
//直走
analogWrite(speedpin,100);
//输入模拟值进行设定速度
analogWrite(speedpin1,100);
digitalWrite(pinI4,LOW);
//使直流电机(右)逆时针转
digitalWrite(pinI3,HIGH);
digitalWrite(pinI1,LOW);
//使直流电机(左)顺时针转
digitalWrite(pinI2,HIGH);
delay(2000);
//后退
digitalWrite(pinI4,HIGH);
//使直流电机(右)顺时针转
digitalWrite(pinI3,LOW);
digitalWrite(pinI1,HIGH);
//使直流电机(左)逆时针转
digitalWrite(pinI2,LOW);
//左转
analogWrite(speedpin,60);
analogWrite(speedpin1,60);
//右转
//刹车
//使直流电机(右)刹车
//使直流电机(左)刹车
注:
程序里我所用的左转和右转只是转弯的一种控制方式,其他方式就不一一列举了,大家可以自己尝试。
将三个Mini红外巡线传感器接到Arduino3、4、5三个数字接口上,接线图如下:
接线实物图
整体图
下面是我编写好的程序,供大家参考。
intIRR=3;
//定义右侧寻线传感器接口
intIRM=4;
//定义中间寻线传感器接口
intIRL=5;
//定义左侧寻线传感器接口
pinMode(IRR,INPUT);
pinMode(IRM,INPUT);
pinMode(IRL,INPUT);
voidadvance()//前进
voidright()//右转
voidleft()//左转
voidstop()//停止
//使直流电机(右)制动
//使直流电机(左)制动
intr,m,l;
r=digitalRead(IRR);
m=digitalRead(IRM);
l=digitalRead(IRL);
if(l==HIGH&
&
m==LOW&
r==HIGH)
advance();
elseif(l==LOW&
m==HIGH&
left();
elseif(l==HIGH&
r==LOW)
right();
elsestop();
再来简单介绍一下Mini避障传感器吧,下面是功能图解。
通过配合调节调频和调距两个电位计,我们可以调到适合我们的检测距离。
有障碍物位低电平,无障碍物位高电平。
我个人认为完成寻线功能后再来完成避障功能就很简单了,有些原理是极为相似的,传感器的使用也是如此相似。
使能跳线帽插上就是一直让传感器工作,拔下则可以通过控制使能端让传感器是否工作。
我这次编写的程序就是在寻线的基础上修改的所以很多都是与寻线的相同,相同的接口定义、相同的子函数,之前也说过寻线与避障有很多相同之处,在程序上也能体现出来。
有前一篇的基础再来看这个程序就应该没什么障碍了,这里就不逐句解释了
,直接附上程序了。
//定义右侧避障传感器接口
//定义中间避障传感器接口
//定义左侧避障传感器接口
voidadvance(inta)//前进
analogWrite(speedpin,a);
analogWrite(speedpin1,a);
voidright(intb)//右转
analogWrite(speedpin,b);
analogWrite(speedpin1,b);
voidleft(intc)//左转
analogWrite(speedpin,c);
analogWrite(speedpin1,c);
voidback(intd)//后退
analogWrite(speedpin,d);
analogWrite(speedpin1,d);
m==HIGH&
advance(120);
if(l==LOW&
r==LOW)
{
back(120);
delay(300);
right(100);
delay(100);
}
r==HIGH)
right(80);
left(100);
left(80);
蔽障程序
#include<
AT89X52.H>
bitRandomFactor=0;
bitRandomFactorBuf=0;
Timer.H>
#defineFLeftMotorP0_2=1;
P0_3=0
#defineBLeftMotorP0_2=0;
P0_3=1
#defineFRightMotorP0_5=1;
P0_4=0
#defineBRightMotorP0_5=0;
P0_4=1
#defineLeftStop
P0_2=0;
#defineRightStop
P0_4=0;
P0_5=0
#defineCarStopP0_2=0;
P0_3=0;
P0_5=0
#defineRightSenserP0_0
#defineLeftSenserP0_1
//********************************************************
//左转
voidTurnLeft_1()
LeftStop;
FRightMotor;
//快速左转
voidTurnLeft_Fast()
BLeftMotor;
//右转
voidTurnRight_1()
RightStop;
FLeftMotor;
//快速右转
voidTurnRight_Fast()
BRightMotor;
//用倒退的方式进行车头右转
voidBTurnRight_1()
//用倒退的方式进行车头左转
voidBTurnLeft_1()
{RightStop;
//前进
voidFCar()
//后退
voidBCar()
//壁障程序
voidObstacle_Avoid(void)
if(RightSenser&
LeftSenser&
PWM)
FCar();
if((!
RightSenser)&
BTurnLeft_1();
(!
LeftSenser)&
BTurnRight_1();
if(!
(RightSenser||LeftSenser))
RandomFactorBuf=RandomFactor;
while(!
if(RandomFactorBuf)
delay(300);
if(!
RandomFactorBuf)
LeftStop;
RightStop;
//跟随程序
voidFollow(void)
RightStop;
TurnRight_1();
TurnLeft_1();
//*******************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 红外 小车