为声波在空气中的传播速度是固定的,发射的超声波遇到障碍物会反射回来,我们记录下 发射波到接受反射波之间的时间差,就可以计算出模块距离障碍物的距离。我们可以把这个用于 测距、避障等领域。HC-SR04模块的测量距离为2-400cm,测量角度为30°,当测量距离大于 范围时传感器接收不到反射波应该不难理解,需要注意的是当测量距离小于一定距离时,因为发 射器发出发射波后还会有一定时间的余振,也被叫作拖尾,这段时间内接收器不能区分余振接收 器和反射波,所以这段时间内反射回来的。和模块有四个引脚,分别是电源、地、TRIG和ECHO, TRIG 引脚输入触发信号,ECHO引脚根据接收到返回信号的时长输出高电平,可以触发中断。
HCSR04.HCSR04(tri,ech) | 构造方法,根据传入的引脚好创建对应的HCSR04对象,tri 为TRIG引脚名,ech为ECHO引脚名 |
HCSR04.distance() | 返回距离,单位为cm |
# .-""-.
# .' o.o `.
# ./ Lang2i \.
# : :
#| _ _ _ _ _ |
# \ / \ /
# `. .'
# `-...-
#导入需要的模块
from machine import Pin,Timer,I2C
from ssd1306 import SSD1306_I2C
from HCSR04 import HCSR04
#配置oled模块
i2c = I2C(scl = Pin(19),sda = Pin(23))
oled = SSD1306_I2C(128,64,i2c,addr = 0x3c)
#配置超声波模块
hc = HCSR04(tri = 14,ech = 12)
#回调函数
def HC_RUN(t):
oled.fill(0)
oled.text('HCSR04',0,0)
oled.text('{:.2f}cm'.format(hc.distance()),0,32)
# oled.text('{:.1f}cm'.format(hc.distance()),0,32)
#oled开始显示
oled.show()
#配置定时器
time0 = Timer(-1)
#初始化定时器
time0.init(period = 1000,mode = Timer.PERIODIC,callback = HC_RUN)
配置了oled进行显示
标签:模块,引脚,检测,esp32,距离,oled,HCSR04,I2C,超声波 From: https://blog.csdn.net/zzh2071816969/article/details/143913149