# 导入相关模块
# 子文件夹下的调用方式
from HCSR04 import HCSR04
from pyb import Pin,delay
from machine import Pin,I2C
from ssd1306 import SSD1306_I2C
# 初始化 OLED
i2c = I2C(sda=Pin("Y8"), scl=Pin("Y6"))
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
# 初始化接口 trig='Y9',echo='Y10'
trig = Pin('Y9',Pin.OUT_PP)
echo = Pin('Y10',Pin.IN)
HC=HCSR04(trig,echo)
while True:
oled.fill(0) # 清屏,背景黑色
oled.text('Distance test:', 0, 15)
Distance = HC.getDistance() # 测量距离
# OLED 显示距离
oled.text(str(Distance) + ' CM', 0, 35)
oled.show()
# 串口打印
print(str(Distance)+' CM')
delay(1000) # 每秒采集1次
from time import sleep_us,ticks_us,sleep
class HCSR04():
def __init__(self,trig,echo):
self.trig = trig
self.echo= echo
def getDistance(self):
distance=0
self.trig.value(1)
sleep_us(10)
self.trig.value(0)
while self.echo.value() == 0:
pass
if self.echo.value() == 1:
ts=ticks_us() # 开始时间
while self.echo.value() == 1: # 等待脉冲高电平结束
pass
te=ticks_us() # 结束时间
tc=te-ts # 回响时间
distance=(tc*170)/10000 #距离计算 (单位为:cm)
return distance
ESP32
于 2022-08-20 14:23:48 首次发布