
超声波传感器是机器人和智能设备中最常用的测距元件之一。本实验使用 HC-SR04 超声波传感器,学习如何测量物体距离,并通过串口监视器实时显示测量结果。
你将学到:
pulseIn() 函数的使用方法HC-SR04 超声波传感器的工作原理类似于蝙蝠的回声定位:
距离计算公式: 距离(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 引脚 |
|---|---|
| VCC | 5V |
| Trig | 数字引脚 9 |
| Echo | 数字引脚 10 |
| GND | GND |
// 超声波测距实验 // 小米创客 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 时发出报警声:
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:停车辅助系统 模拟汽车倒车雷达:距离越近,蜂鸣器响的频率越高。