HC-SR04 超声波测距传感器 Arduino 完整教程
本教程将讲解 HC-SR04 超声波传感器 的工作原理及其与 Arduino 的配合使用。这是 Arduino 项目中最流行的测距/避障传感器。 我已用它制作多个项目,可参考: 可观看视频或阅读图文教程。内容含规格、引脚、接线、代码及进阶应用。 HC-SR04 是一款低成本、易用的测距传感器,量程 2cm–400cm(约 1 英寸–13 英尺)。 模块包含两个超声换能器:发射器 发射 40kHz 超声脉冲,接收器 接收反射波。原理类似潜艇声纳。 4 引脚: Trig 发送超声脉冲,Echo 接收反射信号。 发射 40kHz 超声波,遇障碍物反射返回。根据飞行时间与声速计算距离。 距离公式:距离 = (声速 × 时间) / 2 例:Echo 高 2ms → 距离 = (34 cm/ms × 2ms) / 2 = 34cm(注:原文示例 1.5ms 得 25.5cm,此处修正) Arduino 用 VCC/GND 接 5V/GND,Trig/Echo 接任意数字 I/O 引脚。 结合 16×2 LCD 直观显示距离(cm 与 inch)。 NewPing 库封装了触发、计时、计算,单行代码获取距离,并提供中值滤波提高精度。 进阶: 声速随温湿度变化:20°C 时约 340m/s,-20°C 时约 315m/s。公式: 声速 = 331.4 + 0.6 × 温度 + 0.0124 × 相对湿度 (m/s) 流程:读温湿度 → 计算实时声速 → 获取中值滤波后的飞行时间 → 换算距离。 提供 3D 模型下载(Thangs): 尺寸图(不同厂家略有差异): HC-SR04 是非接触测距、存在检测、液位/位置监测的理想选择。文首已列举相关项目,更多创意应用: 希望本教程对您有帮助。欢迎评论区提问,别忘了查看我的 30+ Arduino 项目合集!
HC-SR04 硬件概览

主要规格
工作电压 5V DC 工作电流 15mA 工作频率 40kHz 最小量程 2cm / 1英寸 最大量程 400cm / 13英尺 精度 3mm 测量角度 <15° 尺寸 45 × 20 × 15mm HC-SR04 引脚定义

HC-SR04 工作原理



pulseIn(echoPin, HIGH) 读取高电平持续时间(μs)。HC-SR04 与 Arduino 接线

所需元件
基础测距代码
/* HC-SR04 超声波传感器 Arduino 教程 by Dejan Nedelkovski, www.HowToMechatronics.com */
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// 发送 10μs 触发脉冲
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 读取回波时间
duration = pulseIn(echoPin, HIGH);
// 计算距离 (cm)
distance = duration * 0.034 / 2;
// 串口输出
Serial.print("Distance: ");
Serial.println(distance);
}代码详解
duration(长整型存储 μs)、distance(整型存储 cm)setup():配置引脚模式,启动串口 9600 波特率loop():
pulseIn(echoPin, HIGH) 返回高电平脉冲宽度(μs)duration × 0.034 / 2LCD 显示测距结果


/* HC-SR04 + LCD 显示 by Dejan Nedelkovski, www.HowToMechatronics.com */
#include 使用 NewPing 库简化编程
#include sonar.ping_median(10) 取 10 次测量中值(返回 μs),抗干扰更强。详见 NewPing Wiki。结合 DHT22 温湿度传感器提高精度

温度补偿代码
/* 温度补偿测距 by Dejan, How To Mechatronics */
#include HC-SR04 尺寸与 3D 模型


结语
制造工艺
- 树莓派 3 接 HC‑SR04 超声波测距传感器完全指南
- 树莓派连接 HC-SR04 超声波传感器实战指南
- DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
- FlickMote:基于手势的智能家居红外遥控器
- 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
- 紧凑型Arduino雷达系统:HC-SR04超声波传感器配1.8英寸显示屏
- 使用 Arduino UNO 和 SR04 超声波传感器构建超声波测距仪
- Arduino 超声波水位/温度监测系统:LCD 显示 + 多级声光报警
- MKR1000 接入 Azure IoT:DHT22 温湿度实时上云监控
- Arduino Nano + TPA81 热堆阵列 + 8×PIR 传感器构建手势/动作检测器
- HC-SR04超声波传感器:工作原理与关键应用
- Arduino传感器:类型、应用与实战项目