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