HC-SR04超声波传感器C语言代码
时间: 2024-06-30 18:01:19 浏览: 189
STM32F103C8T6HAL库控制超声波传感器HC-SR04代码
HC-SR04超声波传感器是一种常用的测距模块,常用于机器人、自动化项目和物联网应用中。在C语言中,控制HC-SR04传感器通常涉及到发送触发脉冲、接收回波信号并计算距离。以下是一个简单的HC-SR04传感器C语言代码示例:
```c
#include <stdio.h>
#include <time.h>
#define TRIGGER_PIN 9 // 引脚9为触发信号
#define ECHO_PIN 10 // 引脚10为回波信号
#define DELAY_US 25 // 超声波发射后的延迟时间,单位为微秒
// 测量距离函数
float measure_distance() {
unsigned long duration;
float distance;
digitalWrite(TRIGGER_PIN, LOW); // 使触发信号低电平
delayMicroseconds(2); // 发送触发脉冲前的延迟
digitalWrite(TRIGGER_PIN, HIGH); // 发送触发脉冲
delayMicroseconds(DELAY_US); // 等待触发后一段时间
digitalWrite(TRIGGER_PIN, LOW); // 释放信号
// 等待回波信号,最长等待时间为最大测量距离时间(大约是40us)
start_time = micros();
while (digitalRead(ECHO_PIN) == LOW && micros() - start_time < DELAY_US * 2); // 读取回波信号
start_time = micros(); // 从回波信号高电平开始计时
while (digitalRead(ECHO_PIN) == HIGH && micros() - start_time < DELAY_US * 2); // 计算持续时间
duration = micros() - start_time; // 回波持续时间减去延迟时间
// 使用公式计算距离,单位cm
distance = (duration / 2) * 17150; // 假设声速为34300cm/us
return distance;
}
int main() {
float distance_cm;
int count = 0;
while (1) {
distance_cm = measure_distance();
printf("Distance: %.2f cm\n", distance_cm);
delay(1000); // 每秒测量一次
count++;
if (count > 10) { // 测量10次后重新计数
count = 0;
}
}
return 0;
}
```
阅读全文