Arduino超声波测距精准指南:HC-SR04与LCD1602实现
Arduino超声波测距项目实战
超声波测距广泛应用于定位、测距、液位、轮廓扫描、机器人避障等领域。结合数学运算还可测速等物理量。
超声波传感器利用回声原理非接触测量小距离。本项目演示HC-SR04对接Arduino,在16×2 LCD显示距离。
- 相关阅读:Arduino UNO可调电源——电路与代码
测距项目电路图

接线简易:HC-SR04的Trig/Echo接Arduino A4/A5,VCC/GND接5V/GND。LCD RS/EN接D12/D11,D4-D7接D5-D2,10K电位器调对比度。
- 相关阅读:Arduino物体检测自动门铃
所需元件
- HC-SR04超声波模块
- Arduino UNO
- 16×2 LCD
- 电位器
- 杜邦线/连接线
HC-SR04超声波模块
非接触测距模块,量程2cm–400cm,精度3mm。内含超声发射/接收器。工作原理:IO触发发10μs高电平,模块发8个40kHz周期超声波并检测回波。若收到回波,Echo脚保持高电平,高电平持续时间=发射到接收往返时间。
距离 = (高电平时间 × 声速340m/s) ÷ 2
- 相关阅读:Arduino自动夜灯
时序图
触发脉冲10μs后,模块发8周期40kHz超声波检测反射。有障碍物则回波返回接收器。距离按上述公式计算,除以2因往返时间对半为单程时间。时序图如下:
技术参数
- 工作电压:5V
- 工作电流:15mA
- 工作频率:40Hz
- 测量角度:15°
- 量程:2cm–400cm
引脚定义
- VCC:模块供电(典型+5V)
- Trig:触发控制脚
- Echo:输出脚,高电平持续时间=超声波往返时间
- GND:接主电路地
单片机给Trig发10μs高脉冲触发,等待Echo高电平,读取时间经公式算距离。
- 相关阅读:什么是钳位电路?设计与工作原理
Arduino UNO
开源单片机广泛用于嵌入式项目。本项目用UNO:廉价易用。14数字I/O、6模拟输入。开源特性允许随意修改软硬件。
- 相关阅读:基于稳压二极管的简易过压保护电路
16×2 LCD模块
嵌入式常用,廉价易对接。计算器/万用表常见。显示16字符×2行,每字符5×8像素矩阵,总像素1280。需指定字符位置较麻烦,HD44780控制器接管数据/指令处理,极简接口。技术规格:
- 工作电压:4.7-5.3V
- 电流:1mA(无背光)
- 2行×16字符
- 5×8像素/字符
- 字母数字/特殊符号
- 绿/蓝背光可选
16×2 LCD引脚定义表
| 引脚号 | 名称 | 功能描述 |
|---|---|---|
| 1 | VSS | 地,接电路地 |
| 2 | VDD | 供电(4.7-5.3V),典型5V |
| 3 | VE | 对比度调节,接电位器中间脚调节显示对比度 |
| 4 | RS | 寄存器选择,切换命令/数据寄存器,接单片机 |
| 5 | RW | 读/写控制,通常接地(写模式) |
| 6 | EN | 使能脚,接单片机,给1/0确认数据 |
| 7 | D0-D7 | 8位数据总线,也可4位模式(仅接D4-D7) |
| 8 | A | 背光阳极,可选,接则亮屏,不接更省电 |
| 9 | K | 背光阴极 |
Arduino对接LCD基础接法:RS/EN接D12/D11,D4-D7接D5-D2,RW/VSS/K接地,VDD/A接5V,VE接电位器调对比度。
- 相关阅读:IC 4017/555交通灯控制电子项目
代码部分:引入LiquidCrystal库,定义引脚变量传入LiquidCrystal构造函数,setup中lcd.begin(16,2)初始化,打印"Hello, World!",loop中setCursor(0,1)显示毫秒计时器。
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
lcd.begin(16, 2);
lcd.print("Hello, World!");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
}
上传后旋钮调对比度即可看到显示。
- 相关阅读:IC 555拍手开关电路(含无定时器版)
超声波测距Arduino编程
引入LCD库,定义Trig/Echo宏映射A4(18)/A5(19):
#include <LiquidCrystal.h>
#define trig 18
#define echo 19
定义LCD引脚变量并初始化,定义距离d与时间t变量:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
float t=0, d=0;
setup初始化LCD、Trig设输出、Echo设输入:
void setup() {
lcd.begin(16,2);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
loop:清屏,Trig发10μs高脉冲触发,pulseIn读Echo高电平时间,按公式算距离(单位换算为cm),LCD显示,延时1秒刷新:
void loop() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
t = pulseIn(echo, HIGH);
d = t * 0.0340 / 2;
d = t * 0.01330 / 2;
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(d);
lcd.print(" cm");
delay(1000);
}
- 相关阅读:自动浴室灯开关电路图与原理
测距电路工作验证
上传代码,手/物体在传感器前移动,观察LCD读数变化,精度良好。
触发后模块发8周期40kHz超声波,遇障碍反射回接收器,模块给出往返时间,经公式得距离。
工业技术
- 树莓派与 Python 构建远程温度传感器:分步实战指南
- 用 Arduino 制作超声波悬浮装置:分步指南
- Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
- 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
- 基于Arduino UNO的精准频率与占空比测量
- 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机
- 紧凑型Arduino雷达系统:HC-SR04超声波传感器配1.8英寸显示屏
- Arduino 电容式触控开关:一枚硬币点亮 LED 的极简 DIY
- 使用 Arduino UNO 和 SR04 超声波传感器构建超声波测距仪
- 测距传感器工作原理与关键应用
- Arduino传感器:类型、应用与实战项目
- PIR传感器电路工作原理、设计与实际应用全解析