一.模块(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);
}