超声波摇头避障小车
制作过程:一、准备材料1、L298n电机驱动模块一个,淘宝也就10元一个(如下图)http://www.arduino.cn/data/attachment/forum/201510/12/184537v2d7iw65vz6iss28.png本模块是2路的H桥驱动,所以可以同时驱动两个电机,但是我用的小电机一个模块就能驱动四个电机。当然大家也可以用其他类型的驱动。
2、LM2596稳压模块一个(如下图)(注意:LM2596稳压模块可以提供3A电流,如用7805的话电流会不够)http://www.arduino.cn/data/attachment/forum/201510/12/184710yh66yozbrb62vvoc.png
3、超声波模块一个(如下图)http://www.arduino.cn/data/attachment/forum/201510/12/184757s82gxc8j8zaa59jx.png
4、9g舵机一个(如下图)http://www.arduino.cn/data/attachment/forum/201510/12/184824tn6aha8f489acn94.png
5、云台一个(可以自己制作用孔孔板)
6、车底盘一个带四个轮子(可以自己制作用铝板或其他材料)(如图) http://www.arduino.cn/data/attachment/forum/201510/12/184856xyyya11bb1hhyscz.png
7、杜邦线若干
8、电池一块(要能提供大电流的那种,比如7.4V航模电池,18650电池等 ,当然能提供2A的充电宝也可以的哦)
9、铜柱(1cm)及螺母和螺丝若干注:以上模块淘宝都可以买到哈
二、电路板的安装及模块的连接1首先大家将各模块通过铜柱用胶水或其他东西安装到小车底盘上2通过杜邦线将各模块连接起来,具体连接法在下就不多讲了大家参考使用说明连接就行哈下图是我小车供大家参考一下http://www.arduino.cn/data/attachment/forum/201510/12/185002lojc22b2vrnk8ko2.jpg
三、完成以上两步小车硬件就完成了接下来就是软件调试了,一下是我的软件,供大家参考
源代码#include <Servo.h>
//#define send
Servo myservo;
int Echo = A1;// Echo回声脚(P2.0)
int Trig =A0;//Trig 触发脚(P2.1)
int in1 = 5;
int in2 = 4;
int in3 = 3;
int in4 = 2;
int rightDistance = 0,leftDistance = 0,middleDistance = 0 ;
void forward()
{
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
}
void back()
{
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
}
void turnleft()
{
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
}
void turnright()
{
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
}
void stop()
{
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
}
int Distance_test() // 量出前方距离
{
digitalWrite(Trig, LOW); // 给触发脚低电平2μs
delayMicroseconds(2);
digitalWrite(Trig, HIGH);// 给触发脚高电平10μs,这里至少是10μs
delayMicroseconds(20);
digitalWrite(Trig, LOW); // 持续给触发脚低电
float Fdistance = pulseIn(Echo, HIGH);// 读取高电平时间(单位:微秒)
Fdistance= Fdistance/58; //为什么除以58等于厘米,Y米=(X秒*344)/2
// X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58
return (int)Fdistance;
}
void setup()
{
myservo.attach(9);
Serial.begin(9600); // 初始化串口
pinMode(Echo, INPUT); // 定义超声波输入脚
pinMode(Trig, OUTPUT); // 定义超声波输出脚
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
stop();
}
void loop()
{
myservo.write(90);
delay(500);
middleDistance = Distance_test();
#ifdef send
Serial.print("middleDistance=");
Serial.println(middleDistance);
#endif
if(middleDistance<=20)
{
stop();
delay(500);
myservo.write(5);
delay(1000);
rightDistance = Distance_test();
#ifdef send
Serial.print("rightDistance=");
Serial.println(rightDistance);
#endif
delay(500);
myservo.write(90);
delay(1000);
myservo.write(175);
delay(1000);
leftDistance = Distance_test();
#ifdef send
Serial.print("leftDistance=");
Serial.println(leftDistance);
#endif
delay(500);
myservo.write(90);
delay(1000);
if(rightDistance>leftDistance)
{
turnright();
delay(450);
}
else if(rightDistance<leftDistance)
{
turnleft();
delay(450);
}
else
{
forward();
}
}
else
forward();
}
http://v.youku.com/v_show/id_XMTM1ODE2MzI4MA==.html
本帖转自http://www.arduino.cn/thread-17702-1-1.html
难道我是沙发 丄帝De咗臂 发表于 2015-12-14 18:37
难道我是沙发
恩 是你 就是你 沙发就是你 这个小车跟我的。。。。一个车架子哈。。。吼吼
只不过。。。。我那个搭载了“昂贵滴”艾迪森。。。。。牛!
最近论坛里是不是有点冷清,还是说因为还不到月末的原因啊 ?!还是说我太忙了忽略的大家。。。吼吼 孙毅 发表于 2015-12-14 23:18
最近论坛里是不是有点冷清,还是说因为还不到月末的原因啊 ?!还是说我太忙了忽略的大家。。。吼吼 ...
你冷落了大家 大家都找不到你了 孙毅 发表于 2015-12-14 23:16
这个小车跟我的。。。。一个车架子哈。。。吼吼
只不过。。。。我那个搭载了“昂贵滴”艾迪森。。。。。牛 ...
什么时候我能玩一下你的牛车 哈哈 大连林海 发表于 2015-12-15 07:58
什么时候我能玩一下你的牛车 哈哈
哈哈哈。。。。小车你还不有的是,不差我这一个。
你这个小车跟我一样的车架啊,话说,你有Edison没?直接换上,吼吼吼 孙毅 发表于 2015-12-15 09:21
哈哈哈。。。。小车你还不有的是,不差我这一个。
你这个小车跟我一样的车架啊,话说,你有Edison没?直 ...
我记得我是有 我又不知道放哪了{:5_134:} 大连林海 发表于 2015-12-15 14:25
我记得我是有 我又不知道放哪了
我想知道,你家到底多乱。。。?! 孙毅 发表于 2015-12-15 15:13
我想知道,你家到底多乱。。。?!
是书太乱 我可能又仍没了 最近收拾家里扔东西了 有没有用mind+写的程序,代码看不懂
页:
[1]