智能小车32:安装超声波测距
2017-09-18 10:27
134 查看
一、硬件准备
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千多。我考虑到我的硬件也还没完全确定,就没有做。
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千多。我考虑到我的硬件也还没完全确定,就没有做。
相关文章推荐
- 智能小车32:安装超声波测距
- 基于msp430小车驱动,寻光设计,超声波测距
- 智能小车30:双轴舵机的安装与调试
- 智能小车30:双轴舵机的安装与调试
- 智能小车31:电路板V1.0安装指南
- 智能小车31:电路板V1.0安装指南
- 智能小车22:安装电压检测模块
- 智能小车22:安装电压检测模块
- ROS(11):莓派Raspberry Pi 小车组装,安装电机和超声波
- 【智能无线小车系列五】安装和启动树莓派
- Android 静默安装和智能安装的实现方法
- 智能循迹小车diy
- 黄聪:dreamweaver jquery代码提示安装,DW JQ代码智能提示
- 智能小车43:avr溶丝位晶振的设置
- 智能寻迹小车的代码
- 毕业设计--基于安卓的智能小车(一)
- 智能小车38:晶振原理与串口的使用
- 安卓手机蓝牙控制智能小车 android程序设计
- Android 静默安装和智能安装的实现方法
- 【智能无线小车系列十一】智能小车一体化测试