一、硬件准备
1.购买超声波模块一个
2.设计超声波安装电路板
刚好今天我买的小台锯到了,可以把万能板锯成我想要的尺寸了。另外还要准备电钻给电路板打孔。
切割成小切并打孔后就可以安装线与超声波的插座了,我选择了2个4p的排母。
在背面需要把这4条线连上,开始用锡连,后来发现太麻烦,还不如连两根线。
小车底盘我并没有打孔,而是利用了现成的一道缝,安装上两根铜柱。再把上面的电路板固定在这两铜柱上就行了。
最后插上超声波模块与电线就行了,电线的连接方式如下:
VCC->5v
GND->GND
Trig->11
Echo->12
当然Trig与Echo可以自己随便定义,trig是发送引脚,echo是接收引脚。
全车的效果如下:
二、写代码调试。
添加一个超声波模块,写入以下代码:
const int trigPin = 12;
const int echoPin = 11;
boolean isCheckDistance=true;
long lastCheckDistcanceTime=0;
// 初始化
void initUltrasonic(){
pinMode(trigPin, OUTPUT);
// 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
pinMode(echoPin, INPUT);
}
void checkDistance(){
//测量周期在60ms以上。以防止发射信号对回响信号的影响
if(millis()-lastCheckDistcanceTime<60){
return;
}
lastCheckDistcanceTime=millis();
if(isCheckDistance){
// 产生一个10us的高脉冲去触发TrigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 检测脉冲宽度,并计算出距离
float distance = pulseIn(echoPin, HIGH) / 58.00;
//如果距离小于10cm或就停止
if(distance<10){
stopGo();
}
}
}
如果没有上面60ms的判断,小车会出现卡顿的现象,应该是蓝牙信号与超声信号发生了冲突。在加了60ms判断后,蓝牙信号有机会在这60ms里得到处理。
因为我的小车只有通过停止来阻止前进,并没有刹车,所以停止后,随着惯性还会前进一段距离。这个10cm就是这段距离,这个与小车的马达和电池有关,根据自己的情况调整。
本来我想去给我的小车做个车壳,跑了一趟中发电子市场。看了几家买壳的,都没有能做的。一家说可以做个车外壳的包装,100多一个。另一家说可单独设计个车壳,报价2千多。我考虑到我的硬件也还没完全确定,就没有做。