【SAMR21新玩法】35. HCSR04超声波传感器

Adafruit CircuitPython相关
回复
头像
shaoziyang
帖子: 717
注册时间: 2019年 10月 21日 13:48

【SAMR21新玩法】35. HCSR04超声波传感器

#1

帖子 shaoziyang » 2019年 10月 25日 10:08

HCSR04超声波传感器是通过测量脉冲宽度来计算距离的,因此可以使用PulseIn功能捕捉脉冲宽度。

下面是在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)

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章