OpenMv+HC-SR04超声波测距(中断)

新版HC-SR04,性能远超老版HC-SR04,US-015;在测距精度高于老版HC-SR04和US-015的情况下,测距范围更远,可达6米,远超一般超声波测距模块。采用CS-100A超声波测距SOC芯片,高性能,工业级,宽电压、低价格,成本击穿底价,只有普通超声波测距模块一半的价格,而性能远超普通超声波测距模块。性能与US-025A相同,均采用CS100A芯片,接口完全兼容。

触发信号:通过trig引脚提供一个超过10ms的高电平信号;

内部信号处理:内部会发出8个40HZ的脉冲信号并检测回波。

输出响应信号:从收到回波开始,输出信号线echo会输出高电平,高电平的时间长短与所测的距离成正比。

距离的计算公式:s=高电平时间*声速(340m/s)/2
代码:

import time, pyb
from pyb import Pin, LED

echo = Pin('P7', Pin.IN, Pin.PULL_NONE)
trig = Pin('P8', Pin.OUT_PP, Pin.PULL_DOWN)

led = LED(1) # 红led

t1 = 0
t2 = 0
t3 = 0
flag = 1

#外部中断配置
def callback(line):
    global flag, t1, t2, t3

    if(echo.value()):
        t1 = time.ticks_us()
    else:
        t2 = time.ticks_us()
        t3 = time.ticks_diff(t2,t1)/10000
        flag = 1

extint = pyb.ExtInt(echo, pyb.ExtInt.IRQ_RISING_FALLING, pyb.Pin.PULL_NONE, callback)

while True:
    if flag:
        extint.disable()
        trig.value(1)
        time.sleep_us(20)
        trig.value(0)
        flag = 0
        extint.enable()
    time.sleep(0.5)
    print(t3*340/2)

代码其实没啥讲的,硬件连接p7->echo,p8->trig,vcc->外加5v(老版超声波只能5v工作,而openmv只能提供3.3v,但要共地),要用中断,不然不方便以后添加其他功能。大家也可尝试用定时器做,思路类似

2023-4-23

import sensor, image, time, pyb
from pyb import UART
from pyb import Pin
class UltraSonic:
    def __init__(self, trig_pin, echo_pin):
        self.trig = machine.Pin(trig_pin, machine.Pin.OUT_PP)
        self.echo = machine.Pin(echo_pin, machine.Pin.IN)
        self.timer = machine.Timer(4)

    def send_trigger_pulse(self):
        self.trig.high()
        time.sleep_us(10)
        self.trig.low()

    def get_pulse_time(self):
        pulse_time = machine.time_pulse_us(self.echo, 1, 1000000)
        return pulse_time

    def get_distance(self):
        self.send_trigger_pulse()
        pulse_time = self.get_pulse_time()
        distance = (pulse_time * 0.0343) / 2
        return distance

us = UltraSonic('P8','p7')

while True:
    print(us.get_distance())

调用内置函数time_pulse_us获得高电平时间,也是可以的,封装成类,看起来更吊一点,但是测试时有点小bug,待解决

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值