下面是在adafruit_hcsr04.py程序基础上,精简的驱动程序:
代码: 全选
from microcontroller import pin, delay_us
from time import monotonic
from digitalio import DigitalInOut, Direction
from pulseio import PulseIn
class HCSR04():
def __init__(self, tp, ep, timeout = 0.1):
self.timeout = timeout
self.ep = PulseIn(ep)
self.ep.pause()
self.ep.clear()
self.tp = DigitalInOut(tp)
self.tp.direction = Direction.OUTPUT
def deinit(self):
self.ep.deinit()
self.tp.deinit()
def distance(self):
self.tp.value = 1
delay_us(10)
self.tp.value = 0
self.ep.clear()
self.ep.resume()
ts = monotonic()
while not self.ep:
if monotonic() -ts > self.timeout:
self.ep.pause()
raise RuntimeError("Timed out")
self.ep.pause()
return self.ep[0]*0.017
代码: 全选
sr04 = HCSR04(pin.PA06, pin.PA07)
while True:
dist = sr04.distance()
print(dist)
delay_us(500*1000)