ESP8266与HC-SR04超声波传感器接线图
HC-SR04 | ESP8266 |
---|
VCC | 3.3V |
GND | GND |
Trig | GPIO12(D6) |
Echo | GPIO14(D5) |
程序-使用ESP8266和HC-SR04超声波传感器获取距离
const int trigPin = 12;//定义超声波模块trigPin引脚为GPIO12
const int echoPin = 14;//定义超声波模块echoPin引脚为GPIO14
//定义声音传播速度(单位:cm/uS)
#define SOUND_VELOCITY 0.034
#define CM_TO_INCH 0.393701
long duration;
float distanceCm;
float distanceInch;
void setup() {
Serial.begin(115200); // 设置波特率115200
pinMode(trigPin, OUTPUT); // 设置 trigPin 输出
pinMode(echoPin, INPUT); // 设置 echoPin 输入
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// 保持 trigPin 高电平 10 微秒
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 读取 echoPin, 返回声波传播时间(单位微秒)
duration = pulseIn(echoPin, HIGH);
// 计算距离
distanceCm = duration * SOUND_VELOCITY/2;
// 距离转换为英寸
distanceInch = distanceCm * CM_TO_INCH;
// 将测得距离打印在串口
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
Serial.print("Distance (inch): ");
Serial.println(distanceInch);
delay(1000);
}
重点函数解析之pulseIn()
函数:
- 函数语法:
pulseIn(pin, value)
或pulseIn(pin, value, timeout)
- 函数参数:
pin
引脚编号
value
脉冲状态
timeout
超时时间(单位:微秒,默认为1s) - 函数返回:
脉冲持续时长。如果在超时时间内没有读到脉冲信号,将返回0。
ESP8266和HC-SR04超声波实验结果示例
评论 (0)