HC-SR04超声波测距模块使用 基于ESP32_PlatformIO开发环境

一.模块(HC-SR04)

二.引脚定义说明

Ttlg   :超声波脉冲触发引脚
Echo :超声波回响引脚
VCC:单片机3.3V
GND:单片机GND

三.硬件电路搭建

四.程序代码参考

1.Ult_sensor.c
#include <Arduino.h>

// 引脚可自定义更改
const int triggerPin = 4; // 触发引脚连接到ESP32的GPIO 4
const int echoPin = 5;    // 回响引脚连接到ESP32的GPIO 5

// 引脚模式设置
void Ult_init(void)
{
    pinMode(triggerPin, OUTPUT);
    pinMode(echoPin, INPUT);
}

// 距离值计算返回函数
float distance(void)
{
    // 发送触发信号
    digitalWrite(triggerPin, LOW);
    delayMicroseconds(2);
    digitalWrite(triggerPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(triggerPin, LOW);

    // 计算回响时间
    unsigned long duration = pulseIn(echoPin, HIGH);

    // 将回响时间转换为距离(单位:厘米)
    float distance = duration * 0.034 / 2;
    return distance;
}

2.Ult_sensor.h

#ifndef __ULT_SENSOR__
#define __ULT_SENSOR__

void Ult_init(void);
float distance(void);

#endif

3.main.c

#include <Arduino.h>
#include <Ult_sensor.h>
#include <U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE, /* clock=*/22, /* data=*/21); // ESP32 Thing, HW I2C with pin remapping

void setup()
{
  Ult_init(); // 超声波初始化
  u8g2.begin();
}

void loop()
{
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_wqy12_t_gb2312);

  // 获取超声波距离
  float value = distance();
  char Num[20];
  sprintf(Num, "%.2f", value);

  // 输出至OLED显示屏
  u8g2.drawUTF8(0, 30, "距离:");
  u8g2.drawUTF8(30, 30, Num);
  u8g2.drawUTF8(70, 30, "CM");

  // 开启显示
  u8g2.sendBuffer();
  delay(500);
}

五.程序实验现象

1.视频待上传......