超声波测距通常涉及到硬件接口和软件编程。以下是一个简单的超声波测距的代码示例,使用的是Arduino平台和HC-SR04超声波传感器。HC-SR04传感器包含一个超声波发射器和一个接收器,可以测量距离并返回时间。
### 硬件连接:
1. HC-SR04的VCC和GND分别连接到Arduino的5V和GND。
2. HC-SR04的Trig(触发)引脚连接到Arduino的一个数字输出引脚(比如D9)。
3. HC-SR04的Echo(回声)引脚连接到Arduino的另一个数字输入引脚(比如D10)。
### Arduino代码:
```cpp
// 定义连接到HC-SR04的引脚
const int trigPin = 9;
const int echoPin = 10;
// 变量用于存储距离
long duration;
float distance;
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 设置Trig和Echo引脚为输出和输入
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// 清空Trig引脚
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// 设置Trig引脚高电平10微秒,发送超声波脉冲
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 读取Echo引脚,获取超声波脉冲返回的时间
duration = pulseIn(echoPin, HIGH);
// 计算距离
distance = duration * 0.034 / 2; // 声速(米/秒)* 时间(秒)/ 2
// 打印距离
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// 等待一秒钟再次测量
delay(1000);
}
```
### 代码解释:
- `trigPin` 和 `echoPin` 分别是连接到HC-SR04的触发和回声引脚的Arduino数字引脚。
- `duration` 变量用于存储超声波脉冲从发射到接收的时间。
- `distance` 变量用于存储计算出的距离。
- `setup()` 函数中初始化串口通信,并设置引脚模式。
- `loop()` 函数中,首先发送一个10微秒的高电平脉冲到触发引脚,然后读取回声引脚,计算时间差。
- 使用 `pulseIn()` 函数读取高电平的持续时间,这个时间就是超声波从发射到接收的时间。
- 计算距离的公式是 `distance = duration * 0.034 / 2`,其中0.034是空气中声速(米/秒)除以1000(因为`pulseIn()`返回的单位是微秒),除以2是因为声波走了往返两次。
- 最后,通过串口打印出测量的距离,并等待一秒钟再次测量。
请注意,这个代码示例假设你使用的是HC-SR04超声波传感器,并且你的Arduino开发环境已经设置好。如果你使用的是其他型号的超声波传感器或者不同的微控制器,代码可能需要相应的调整。
|