15.超声波传感器
一、功能以及原理
HC-SR04 超声波传感器是通过发送和接收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离的一种传感器模块。与蝙蝠寻找猎物的回声定位基本原理相同,可以广泛应用于无损测量、水文液位测量、工业场地等领域。

二、引脚介绍以及对应开发板可用引脚
针脚 | 可连接引脚 | 功能 |
VCC | 5V | 提供工作电压 |
TROG | 数字引脚 | 出发控制信号输入 |
ECHO | 数字引脚 | 回响信号输出 |
GND | GND | GND |
三、代码控制
传感器发射器向某一个确定的方向发射超声波的同时进行计时,超声波在碰触到障碍物之后会返回给超声波接收器一个反射波,此时停止计时,将时间纪录为 t。根据速度距离公式,结合超声波的传播速度与时间 t,可以推算出超声波发射点与所测量障碍物之间的距离为 S=340t/2。因此在代码中,需要编写测距函数,以下是示例代码。
3.1 文本代码
volatile float my_float_variable;
#define TRIG_PIN 3
#define ECHO_PIN 2
float readDistanceCM(){
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(13, OUTPUT);
}
void loop() {
my_float_variable = readDistanceCM();
if (my_float_variable < 100) {
digitalWrite(13,HIGH);
}
else {
digitalWrite(13,LOW);
}Serial.print("Measured distance:");
Serial.println(readDistanceCM());
delay(0.1 * 1000);
}
3.2 图形化代码
可在“传感器”中的“超声波传感器”,找到对应图形化代码块。
图形化代码不需要额外编写函数,在传感器模块中,已经封装测距函数。


3.3 结果
编写完控制程序,模拟运行后,单击元器件能够修改传感器感知数值


四、相关案例演示
精选项目请关注 https://www.funcode.cc/simulate/?project_id=9&type=3&share_source=0
同时精选项目提供了结合超声波传感器、语音播报器搭建安全报警器的案例 https://www.funcode.cc/simulate?project_id=65&type=3&share_source=0
五、相关课程链接
B 站视频链接 https://www.bilibili.com/video/BV1XD48eeEXS/?spm_id_from=333.1387.upload.video_card.click