您的位置:首页 > 其它

智能小车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千多。我考虑到我的硬件也还没完全确定,就没有做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: