Arduino机器人应用3—2WD小车避障

发布时间:2017-11-1 阅读量:855 来源: 我爱方案网 作者:

文中与大家分享小车避障的程序,希望能给大家一点借鉴。


避障功能在日常生活中也是比较常见的,像是风靡一时的自动清扫机器人,小小圆圆的,只需放在地上一会就可以将你的屋子打扫干净,这里面的最基本功能就是避障,当它检测到前方有障碍就会绕开。这样就可以躲避家具将你的地板清理干净了。

下面我们就来完成我们自己的避障小车吧。

还是先说我们要准备的东东,2WD小车(注意:小车一定要是根据以前的博文装配完成的哦!Arduino机器人应用2—2WD小车寻线还有装配不明白的好朋友们就麻烦去参考那篇博文啦!Arduino机器人应用1—2WD小车基本功能测试)、三个Mini红外避障传感器、三条传感器连接线、传感器支架,当然要有Arduino和Arduino传感器扩展板、杜邦线若干。要提到的一点,这次我用的是机器人基地新版的传感器扩展板,将IIC接口、32路舵机控制器接口、蓝牙模块通信接口、SD卡模块通信接口、APC220无线射频模块通信接口、RB URF v1.1超声波传感器接口、12864液晶串行与并行接口全部留出,这样做起实验来就更加的方便了。赞一下吧Arduino机器人应用3—2WD小车避障。


再来简单介绍一下Mini避障传感器吧,下面是功能图解。


通过配合调节调频和调距两个电位计,我们可以调到适合我们的检测距离。有障碍物位低电平,无障碍物位高电平。我个人认为完成寻线功能后再来完成避障功能就很简单了,有些原理是极为相似的,传感器的使用也是如此相似。使能跳线帽插上就是一直让传感器工作,拔下则可以通过控制使能端让传感器是否工作。


这次编写的程序就是在寻线的基础上修改的所以很多都是与寻线的相同,相同的接口定义、相同的子函数,之前也说过寻线与避障有很多相同之处,在程序上也能体现出来。这里就不逐句解释,直接附上程序了。

int pinI1=8;//定义I1接口
int pinI2=9;//定义I2接口
int speedpin=11;//定义EA(PWM调速)接口
int pinI3=6;//定义I3接口
int pinI4=7;//定义I4接口
int speedpin1=10;//定义EB(PWM调速)接口
int IRR=3;//定义右侧避障传感器接口
int IRM=4;//定义中间避障传感器接口
int IRL=5;//定义左侧避障传感器接口
void setup()
{
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpin,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedpin1,OUTPUT);
pinMode(IRR,INPUT);
pinMode(IRM,INPUT);
pinMode(IRL,INPUT);
}
void advance(int a)//前进
{
analogWrite(speedpin,a);//输入模拟值进行设定速度
analogWrite(speedpin1,a);
digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
digitalWrite(pinI3,HIGH);
digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
digitalWrite(pinI2,HIGH);
}
void right(int b)//右转
{
analogWrite(speedpin,b);//输入模拟值进行设定速度
analogWrite(speedpin1,b);
digitalWrite(pinI4,HIGH);//使直流电机(右)顺时针转
digitalWrite(pinI3,LOW);
digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
digitalWrite(pinI2,HIGH);
}
void left(int c)//左转
{
analogWrite(speedpin,c);//输入模拟值进行设定速度
analogWrite(speedpin1,c);
digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
digitalWrite(pinI3,HIGH);
digitalWrite(pinI1,HIGH);//使直流电机(左)逆时针转
digitalWrite(pinI2,LOW);
}
void stop()//停止
{
digitalWrite(pinI4,HIGH);//使直流电机(右)制动
digitalWrite(pinI3,HIGH);
digitalWrite(pinI1,HIGH);//使直流电机(左)制动
digitalWrite(pinI2,HIGH);
}
void back(int d)//后退
{
analogWrite(speedpin,d);//输入模拟值进行设定速度
analogWrite(speedpin1,d);
digitalWrite(pinI4,HIGH);//使直流电机(右)顺时针转
digitalWrite(pinI3,LOW);
digitalWrite(pinI1,HIGH);//使直流电机(左)逆时针转
digitalWrite(pinI2,LOW);
}
void loop()
{
int r,m,l;
r=digitalRead(IRR);
m=digitalRead(IRM);
l=digitalRead(IRL);
if(l==HIGH &&m==HIGH && r==HIGH)
advance(120);
if(l==LOW &&m==LOW  && r==LOW )
{
back(120);
delay(300);
right(100);
delay(100);
}
if(l==LOW &&m==HIGH  && r==LOW )
{
back(120);
delay(300);
right(100);
delay(100);
}
if(l==HIGH  &&m==LOW  && r==HIGH  )
{
back(120);
delay(300);
right(100);
delay(100);
}
if(l==LOW &&m==LOW  && r==HIGH )
right(100);
if(l==LOW && m==HIGH && r==HIGH)
right(80);
if(l==HIGH &&m==LOW  && r==LOW )
left(100);
if(l==HIGH &&m==HIGH  && r==LOW )
left(80);

}


以上就是小编为大家介绍的有关“Arduino机器人应用3—2WD小车避障”的相关知识,有想了解更多的朋友可以看以下相关文章。希望通过小编的介绍能给大家带来帮助!


Arduino机器人应用3—2WD小车避障”的相关文章:


红外避障电动小车C51程序-原文链接: 
http://www.52solution.com/knowledge/5601.html

相关资讯
无源晶振YSX321SL应用于高精度HUD平视显示系统YXC3225

在现代汽车行业中,HUD平视显示系统正日益成为驾驶员的得力助手,为驾驶员提供实时导航、车辆信息和警示等功能,使驾驶更加安全和便捷。在HUD平视显示系统中,高精度的晶振是确保系统稳定运行的关键要素。YSX321SL是一款优质的3225无源晶振,拥有多项卓越特性,使其成为HUD平视显示系统的首选。

拥有卓越性能的高精度超薄低功耗心电贴—YSX211SL

随着医疗技术的进步,心电监护设备在日常生活和医疗领域中起到了至关重要的作用。而无源晶振 YSX211SL 作为一种先进的心电贴产品,以其独特的优势在市场上备受瞩目。

可编程晶振选型应该注意事项

对于可编程晶振选型的话,需要根据企业的需求选择。在选择可编程晶振的时候注重晶振外观、晶振的频率、晶振的输出模式、晶振的型号等等,这些都是要注意的,尤其是晶振的频率和晶振输出模式以及晶振的型号都是需要注意的。

性能高的服务器—宽电压有源晶振YSO110TR 25MHZ,多种精度选择支持±10PPM—±30PPM

在现代科技发展中,服务器扮演着越来越重要的角色,为各种应用提供强大的计算和数据存储能力。而高品质的服务器组件是确保服务器稳定运行的关键。YSO110TR宽电压有源晶振,作为服务器的重要组成部分,具备多项优势,成为业界必备的可靠之选。

差分晶振怎么测量

其实对于差分晶振怎么测量方式有很多种,主要还是要看自己选择什么样的方式了,因为选择不同的测量方式步骤和操作方式是不同的。关于差分晶振怎么测量的方式,小扬给大家详细的分享一些吧!