超声波测距驱动-HCSR04(增加温度补偿,误差极小)
发表于 : 2019年 11月 25日 12:20
原帖作者:chpczx 发表于 2019-7-5
说明:本驱动参照了邵子扬老师(我是邵老师在孝感培训的学员)对hc-sr04写的驱动,因为误差较大,增加温度补偿后,误差大大减小。
Code: Select all
from microbit import *
from time import sleep_us
from machine import time_pulse_us
from math import sqrt
class Hcsr04():
def __init__(self, pin_trig, pin_echo):
self.pin_trig = pin_trig
self.pin_echo = pin_echo
# 设置速度温度补偿
def speed(self):
t = temperature()
sp = 331*sqrt(1+t/273)
return sp
# 距离返回单位为毫米
def distance(self):
self.pin_echo.read_digital()
self.pin_trig.write_digital(1)
sleep_us(10)
self.pin_trig.write_digital(0)
ts = time_pulse_us(self.pin_echo, 1, 30000)
v = self.speed()
if ts > 0:
return ts * v // 2000
return ts
if __name__== "__main__":
while True:
hcsr = Hcsr04(pin15, pin16)
print(hcsr.distance())
sleep(500)