HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm,模块包括超声波发射器、接收器与控制电路。像智能小车的测距以及转向,或是一些项目中,常常会用到。智能小车测距可以及时发现前方的障碍物,使智能小车可以及时转向,避开障碍物。
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。首先,超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为C=340m/s,根据计时器记录的时间T秒,就可以计算出发射点距障碍物的距离L,即: 。这就是所谓的时间差测距法。
人们可以听到的声音的频率为20Hz~2KHz,也就是可听声波。超出此频率范围的声音,20Hz以下的声音称为低频声波,20KHz以上的声音称为超声波,一般说话的频率范围是10Hz-8KHz。超声波方向性好,穿透能力强,易于获得较集中的声能,在水中传播距离远,超声波因其频率下限大约等于人的听觉上限而得名。
# 部署
使用Uno控制超声波传感器测量前方障碍物的距离,并显示到LCD显示屏上。为此,你需要同时连接LCD和超声波传感器到osepp UNO上:
- 超声波模块
VCC
接OSEPP UNO的5V
。 - 超声波模块
GND
接OSEPP UNO的GND
。 - 超声波模块
ECHO
接到OSEPP UNO的9
号引脚。 - 超声波模块
TRIG
接到OSEPP UNO的8
号引脚。 - LCD的接口
RS-D7
分别连接到OSEPP UNO的2~7
号引脚。
# 连线图
# 程序搭建
- oseppBlock 积木知识
超声波模块积木。
Trig
(控制端),控制发出的超声波信号。
Echo
(接收端)接收反射回来的超声波信号。
超声波模块返回值,单位是毫米。
oseppBlock代码
Arduino代码
#include <oseppRobot.h> #include <LiquidCrystal.h> OseppUltrasonic ultrasonic1(8, 9); //定义超声波引脚 LiquidCrystal lcd1(2, 3, 4, 5, 6, 7); //定义LCD引脚 void setup() { lcd1.begin(16, 2); //LCD初始化 } void loop() { lcd1.clear(); //清屏 lcd1.setCursor(0, 0); //显示光标定位 lcd1.print(ultrasonic1.ping()); //显示距离 lcd1.print("mm"); //单位 delay(1000); //延时 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 运行结果
代码上传成功后,如果超声波模块前面有物体,并且距离在2-4000mm
之间。LCD就会显示这个物体与超声波模块之间的距离。你可以改变物体与超声波模块的距离查看LCD 显示是否产生变化。
# 解析
采用IO口
TRIG
触发测距,给至少10us
的高电平信号。模块自动发送
8
个40khz
的方波,自动检测是否有信号返回。有信号返回,通过IO口
ECHO
输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
# 操作视频
← 舵机 综合应用-档位控制小风扇 →