首页教程中心Arduino超声波传感器测距实验
入门35分钟#Arduino#超声波#HC-SR04

超声波传感器测距实验

学习使用 HC-SR04 超声波传感器测量距离,掌握串口通信的使用方法,并制作一个简单的距离报警器。

小米创客团队更新于 2024-02-20
超声波传感器测距实验

项目简介

超声波传感器是机器人和智能设备中最常用的测距元件之一。本实验使用 HC-SR04 超声波传感器,学习如何测量物体距离,并通过串口监视器实时显示测量结果。

你将学到:

  • HC-SR04 超声波传感器的工作原理
  • pulseIn() 函数的使用方法
  • 串口通信(Serial)的基本使用
  • 距离计算公式的应用

工作原理

HC-SR04 超声波传感器的工作原理类似于蝙蝠的回声定位:

  1. 发射超声波: 传感器的 Trig 引脚接收到一个 10μs 的高电平脉冲后,发射 8 个 40kHz 的超声波脉冲
  2. 等待回声: 超声波遇到障碍物后反射回来,Echo 引脚输出一个高电平信号
  3. 计算距离: 根据声音传播时间计算距离
距离计算公式: 距离(cm) = 声音传播时间(μs) × 声速(340m/s) ÷ 2 ÷ 10000
>
简化为:距离(cm) = 时间(μs) / 58

所需材料

材料数量说明
Arduino Uno 主板1块
HC-SR04 超声波传感器1个小米创客套件已包含
面包板1块
跳线4根
蜂鸣器(可选)1个用于报警功能

电路连接

HC-SR04 有 4 个引脚:VCC、Trig、Echo、GND

HC-SR04 引脚Arduino 引脚
VCC5V
Trig数字引脚 9
Echo数字引脚 10
GNDGND

编写代码

cpp
// 超声波测距实验 // 小米创客 kidsbits 出品

const int TRIG_PIN = 9; // Trig 引脚 const int ECHO_PIN = 10; // Echo 引脚

void setup() { pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); Serial.begin(9600); // 初始化串口通信,波特率 9600 Serial.println("超声波测距实验启动!"); }

void loop() { float distance = getDistance(); Serial.print("距离: "); Serial.print(distance); Serial.println(" cm"); delay(500); // 每 0.5 秒测量一次 }

float getDistance() { // 发送触发脉冲 digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // 读取回声时间 long duration = pulseIn(ECHO_PIN, HIGH); // 计算距离(单位:厘米) float distance = duration / 58.0; return distance; }

使用串口监视器

上传代码后,点击 Arduino IDE 右上角的串口监视器图标(或按 Ctrl+Shift+M),设置波特率为 9600,即可看到实时测量的距离数据。


添加报警功能

在电路中加入蜂鸣器,当距离小于 20cm 时发出报警声:

cpp
const int BUZZER_PIN = 8;  // 蜂鸣器引脚

void loop() { float distance = getDistance(); Serial.print("距离: "); Serial.print(distance); Serial.println(" cm"); // 距离小于 20cm 时报警 if (distance < 20 && distance > 0) { tone(BUZZER_PIN, 1000, 200); // 发出 1000Hz 的声音,持续 200ms Serial.println("⚠️ 警告:距离过近!"); } delay(500); }


进阶挑战

挑战1:LED 距离指示灯 用 3 个不同颜色的 LED 表示距离范围:绿色(>50cm)、黄色(20-50cm)、红色(<20cm)。

挑战2:LCD 显示距离 将测量结果显示在 LCD1602 液晶屏上,而不是串口监视器。

挑战3:停车辅助系统 模拟汽车倒车雷达:距离越近,蜂鸣器响的频率越高。