hcsr04超声波传感器测距代码
时间: 2025-02-25 09:46:09 浏览: 59
### 使用 HCSR04 超声波传感器进行测距的代码示例
对于使用 Arduino 平台上的 HCSR04 超声波传感器进行测距,可以利用专门为此设计的库来简化操作流程。下面提供了一个基于 Arduino 的 C++ 代码实例,用于展示如何通过 HCSR04 测量距离并打印结果。
```cpp
#include <NewPing.h> // 导入 NewPing 库以便更方便地处理超声波数据
#define TRIGGER_PIN 7 // 定义 Trig 引脚连接至 Arduino 的 D7
#define ECHO_PIN 8 // 定义 Echo 引脚连接至 Arduino 的 D8
#define MAX_DISTANCE 200 // 设置最大检测距离为 200 厘米
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // 创建 NewPing 对象 'sonar'
void setup() {
Serial.begin(9600); // 初始化串口通信波特率为 9600 bps
}
void loop() {
delay(50); // 等待至少 50ms 来准备下一次测量
int cm = sonar.ping_cm(); // 获取当前障碍物的距离(单位:cm)
if (cm == 0 || cm > MAX_DISTANCE) {
Serial.println("Out of range"); // 如果超出有效范围,则报告错误信息
} else {
Serial.print(cm); // 否则显示实际读数
Serial.println(" cm");
}
}
```
这段程序展示了怎样设置触发和回响引脚,并调用了 `ping_cm()` 函数获取以厘米表示的目标距离[^1]。此函数会自动计算往返时间并将之转换成相应的物理长度值。如果返回的结果小于等于零或大于预设的最大限度,则认为目标不在可探测范围内;反之,则正常输出所测得的具体数值。
另外,在 Python 中也可以实现类似的逻辑,特别是在 Haas 设备或其他支持 MicroPython 的平台上:
```python
from machine import Pin, time_pulse_us
import utime
trig_pin = Pin('P9', mode=Pin.OUT) # 更改为具体的 GPIO 号码
echo_pin = Pin('P10', mode=Pin.IN)
while True:
trig_pin.value(0)
utime.sleep_us(2)
trig_pin.value(1)
utime.sleep_us(10)
trig_pin.value(0)
duration = time_pulse_us(echo_pin, 1, 30000) / 58.0
distance = round(duration * 0.017 , 2)
print(f'Distance: {distance} cm')
utime.sleep_ms(100)
```
上述 Python 版本同样实现了对 HCSR04 的控制与读取功能,不过这里手动完成了脉冲宽度调制以及时间差转换单位的过程[^2]。
阅读全文
相关推荐


















