YFROBOT创客社区
标题: Arduino智能车制作 [打印本页]
作者: 原始人 时间: 2013-9-24 19:04
标题: Arduino智能车制作
本帖最后由 原始人 于 2013-9-24 19:06 编辑
Arduino智能车制作(超声波避障、12864显示、测速)
学习Arduino有段时间了,也看了很多东西,所以打算最近做了一辆3轮的智能车,一开始想要做个超声波避障小车的,但是正好手边有个LCD12864,果断将它加入其中,后来又加入测速模块(想想有点鸡肋,但是小车底盘又带码盘,不能浪费。。。不管它了,先做了再说)!!做的不好请轻拍~~~有在做小车的朋友可以一起讨论!
下面看下我所用到的装备(上次已经发了一个关于配件的帖子点击查看:制作所用的配件表):
1、首先当然是小车底盘了,我用的是3轮小车底盘,带开关(很方便);安装小车应该很简单,这里就不废话了,下面是小车图片:
[attach]568[/attach]
2、控制板(我用的是UNO兼容版),电机驱动,扩展板(方便用杜邦线,VCC及GND也很多);3块板子可以直接插在一起,节省了很多空间,如下图:
[attach]574[/attach]
3、供电电源,我使用的是7.4V充电锂电池加DC转接头,当然还有充电器~~如下图:
[attach]571[/attach]
4、超声波舵机云台,如图:
[attach]570[/attach]
5、显示模块LCD12864,我的买回来后又加工了一次,原来是直排针(不太还接线),将它改成弯排针了,如下图
6、最后就是测速模块,现在还没调试到它,但是已经将它安装在小车上;还有些配件:螺丝、铜柱、杜邦线等,还有些简单的工具:烙铁、螺丝刀什么的;我还有用扎带,热缩管,这样小车看起来会更美观!
买回来的东西我就将这些东西照着想好的方法一股脑的都安装好了,也没去想想是否合适,更都没想着去拍照什么的(第一次做没经验啊,现在发帖也很纠结,没图没真相啊!!)额额~~组装起来后,在调试阶段又才发现有很多问题,无奈又去拆啊什么的,够繁琐的~~总之先看下我的小车样子吧:
[attach]573[/attach]
原来电池安装在小车背面舵机和电机之间的位置,后来小车跑起来之后,发现头太重了,万向轮会翘起来,所以后来改装在控制板的下方,也还行没影响美观~~
下面是我写的程序:[attach]572[/attach] 欢迎下载 仅供参考!
程序中还用到了LCD12864显示库文件:[attach]575[/attach]
这个程序个人觉得还是不太满意,有空会再完善,希望谁有更好的程序拿出来大家分享分享~~~
程序中没有测速内容,但是实物有把测速模块安装上去,建议小车未安装之前,先想办法测试两个电机的速度,保证他们的速度基本相同!后面的避障程序中可以不用测速部分的程序(累赘)。
如果真的想做好避障,还是需要多加几个传感器,一个超声波明显不太完美,有的低点的障碍物避免不了碰撞了~~ 还有,超声波检测前方的障碍物,如果遇到窄道,有时还会出现错误!
后期准备完善小车,增加循迹,红外或者蓝牙遥控功能~~~~~~~~~
作者: YFRobot 时间: 2013-10-19 19:26
如果再详细一些就好了...
作者: ILM. 时间: 2014-10-4 11:09
cm_R[s] = float(int(cm_R[s] * 100.0)) / 100.0; //保留两位小数
这句是什么意思,不是很懂,求解释
作者: hero_sun 时间: 2016-1-24 15:52
本帖最后由 hero_sun 于 2016-2-8 10:51 编辑
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);
}
//(拷贝)请多指教!
作者: hero_sun 时间: 2016-1-24 16:11
同求ILM的问题
作者: hero_sun 时间: 2016-1-24 16:28
可不可以用4个电机的车底盘?我是初学者。请多指教!
作者: hero_sun 时间: 2016-1-24 16:42
请问超声波传感器那4个脚分别插在哪儿?
作者: hero_sun 时间: 2016-1-24 17:00
本帖最后由 hero_sun 于 2016-1-24 17:13 编辑
不够详细!
作者: hero_sun 时间: 2016-1-24 17:26
/Users/Cheng/Downloads/bzxc_cp_
作者: hero_sun 时间: 2016-1-24 19:15
本帖最后由 hero_sun 于 2016-3-27 10:45 编辑
云台连哪儿?
作者: hero_sun 时间: 2016-1-25 08:36
请问扩展板是什么型号?
作者: hero_sun 时间: 2016-1-25 10:00
本帖最后由 hero_sun 于 2016-1-25 13:34 编辑
请问LCD12864用的是什么线?
作者: 原始人 时间: 2016-1-26 08:58
本帖最后由 原始人 于 2016-1-26 09:03 编辑
超声波使用的是 A2 和A3脚,这个自行定义也可以的!我使用的扩展板上就有这个接口舵机使用的是D13
12864 使用的是杜邦线连接的,引脚使用下面也有!
所有的连接方式都有写到程序中,打开一看就知道了!
Arduino避障小车
電路連接:
D3、D4和D6、D7分别连接左右电机,控制电机
超聲波連接:
VCC ---- +5V;Trig ---- A2;Echo ---- A3;GND ---- GND;
舵機控制:D13
LCD12864引脚连接:
RS ---- D2;R/W ---- D8;E ---- D9;PCB ---- GND; VSS ---- GND; VDD ---- VCC; LED+ ---- VCC; LED- ---- GND;
作者: 原始人 时间: 2016-1-26 09:07
那句话是将 int 型 转为 float 型,并保留 两位小数
作者: hero_sun 时间: 2016-1-26 09:07
请问支撑的柱子是多少寸?
作者: hero_sun 时间: 2016-1-26 09:10
谢谢楼主!
作者: hero_sun 时间: 2016-1-26 09:12
arduino uno的
作者: 原始人 时间: 2016-1-26 09:14
也是30mm的,底下有电池的
作者: hero_sun 时间: 2016-1-26 09:25
好像缩小的汽车耶...
作者: hero_sun 时间: 2016-1-29 12:30
怎么还没有回复
作者: hero_sun 时间: 2016-2-16 11:50
喂喂,没回复?
作者: AllBlue 时间: 2016-2-16 13:02
什么问题?
作者: hero_sun 时间: 2016-3-12 08:59
谢谢!我用同样的东西和版本,竞然不行?(程序也一样)!
作者: hero_sun 时间: 2016-3-27 10:41
int WER;
int fcv = 2;
int comI = 3,comII = 11;
void astvg(int asdI,int asdII)
{
analogWrite(comI,asdI);
analogWrite(comII,asdII);
}
void setup()
{
pinMode(comI,OUTPUT);
pinMode(comII,OUTPUT);
}
void loop()
{
WER = analogRead(fcv);
if(WER <30)
{
astvg(30,70);
}
if(WER >30)
{
astvg(50,50);
}
}
作者: AllBlue 时间: 2016-3-28 13:37
你这是驱动小车程序?
作者: tiantianyouyou 时间: 2019-5-8 07:42
值得学习的好资料,谢谢
作者: duyi324 时间: 2019-5-8 21:00
我来学习一下,新人报道
作者: mwam2005 时间: 2020-4-21 21:37
哦哦 谢谢楼主
作者: hjhj 时间: 2020-7-2 23:50
这么多东西
欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) |
Powered by Discuz! X3.1 |