赞
踩
1.超声波测距基础:超声波频率高,波长短,方向性好,能够成为射线而定向传播等特点
我使用的超声波传感器为【US-015】,如下图:
它有四个引脚,分别是VCC、GND以及发射引脚Trig、接收引脚Echo
两个探头,一个是发射探头,一个是接收探头。
测距原理:发射探头发射超声波,传感器开始计时,在空气中遇到障碍物就会反射回来,接收器收到返回的超声波波以后就会停止计时,根据计时器记录的时间可以计算出发射点到障碍物的距离。计算公式:S=V·t/2,其中V取340m/s,t为记录的时间
相关参数有:
工作电压:5V
工作电流:15mA
作用角度:小于15°
测量最大距离450cm 最小距离2cm(小于这个距离精度很差,可以说是盲区了)
组装好的电路大概是这样:
以下是使用的代码及部分注释笔记:
- const int TrigPin=8;//设置发射引脚为8号引脚
- const int EchoPin=9;//设置接收引脚为9号引脚
- float cm;//将数据设为浮点数类型,提高超声探测的精度
- /*const之前没有用到过
- 它的作用是将定义的脚位存储在只读存储器
- 或者认为是UNO板的硬盘里
- 作用是在运行中节约UNO板的内部资源
- */
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(9600);//开启串口通讯,设置波特率为9600
- pinMode(TrigPin,OUTPUT);//将发射引脚初始化为输出模式
- pinMode(EchoPin,INPUT);//将接收引脚初始化为输入模式,用于接收传感器的数据
- }
-
- void loop() {
- // put your main code here, to run repeatedly:
- digitalWrite(TrigPin,LOW);//用低高低的电平发送脉冲给发射引脚
- delayMicroseconds(2);//短暂延时
- /*delayMicroseconds()也是之前没接触过
- 但是作用跟Delay是相似的
- 也是一个延时函数,单位是微妙
- 1000微妙=1毫秒
- */
- digitalWrite(TrigPin,HIGH);
- delayMicroseconds(10);
- digitalWrite(TrigPin,LOW);
- cm=pulseIn(EchoPin,HIGH)/58.0;//读取脉冲的宽度,并将其换算成厘米
- Serial.print(cm);//距离
- Serial.print("cm");//单位
- Serial.println();//回车
- delay(1000);
-
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。