标签搜索
侧边栏壁纸
    love love love

  • 累计撰写 33 篇文章
  • 累计收到 20 条评论

ESP8266连接HC-SR04 超声波传感器测距

星星
2023-02-02 / 0 评论 / 248 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月05日,已超过468天没有更新,若内容或图片失效,请留言反馈。
ESP8266与HC-SR04超声波传感器接线图

esp8266-hc-sr04

HC-SR04ESP8266
VCC3.3V
GNDGND
TrigGPIO12(D6)
EchoGPIO14(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() 函数:
  1. 函数语法:
    pulseIn(pin, value)pulseIn(pin, value, timeout)
  2. 函数参数:
    pin 引脚编号
    value 脉冲状态
    timeout 超时时间(单位:微秒,默认为1s)
  3. 函数返回:
    脉冲持续时长。如果在超时时间内没有读到脉冲信号,将返回0。

ESP8266和HC-SR04超声波实验结果示例

ESP8266超声波实验串口调试结果

本文共 268 个字数,平均阅读时长 ≈ 1分钟
1

评论 (0)

取消