接线
Trig:pin1
Echo:pin2
代码
from microbit import *
from time import sleep_us
from machine import time_pulse_us
def distance(tp, ep):
ep.read_digital()
tp.write_digital(1)
sleep_us(10)
tp.write_digital(0)
ts = time_pulse_us(ep, 1, 5000)
if ts > 0:
return ts * 17 // 100
return ts
while True:
dist = distance(pin1, pin2)
print(dist)
sleep(500)
输出
关键函数
time_pusle_us()
函数原型:machine.time_pulse_us(pin, pulse_level, timeout_us=1000000)
参数说明:
1、pin:需要计算脉冲持续时间的引脚
2、pulse_level:为0以计时低脉冲或1以计时高脉冲
3、timeout_us:超时时间。
函数首先等待pin引脚的状态进入所需的测量电平,若超时时间内,引脚还没有变为需要的电平,则返回-2;若电平持续时间超过了超时时间,则返回-1;正常则返回微妙数
测量原理
测量时序:
测量过程:
1、首先在Trig引脚上输出一个高电平,延时10us后拉低
2、使用time_pulse_us捕获Echo回响信号高电平的持续时间
3、通过公式计算,空气(15℃)340m/s。1us声音传播是0.34mm,计算的时间是发射和返回的时间和,距离是声音传播距离的1/2。函数以mm为单位返回测量的距离