智能小车32:安装超声波测距
一、硬件准备
1.购买超声波模块一个
2.设计超声波安装电路板
刚好今天我买的小台锯到了,可以把万能板锯成我想要的尺寸了。另外还要准备电钻给电路板打孔。
切割成小切并打孔后就可以安装线与超声波的插座了,我选择了2个4p的排母。
在背面需要把这4条线连上,开始用锡连,后来发现太麻烦,还不如连两根线。
小车底盘我并没有打孔,而是利用了现成的一道缝,安装上两根铜柱。再把上面的电路板固定在这两铜柱上就行了。
最后插上超声波模块与电线就行了,电线的连接方式如下:
VCC->5v
GND->GND
Trig->11
Echo->12
当然Trig与Echo可以自己随便定义,trig是发送引脚,echo是接收引脚。
全车的效果如下:
二、写代码调试。
添加一个超声波模块,写入以下代码:
文/程忠 浏览次数:0次 2017-09-18 08:27:23
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千多。我考虑到我的硬件也还没完全确定,就没有做。
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑