2025年1月23日(HS-SR04B 超声测距)

系统信息:

Raspberry Pi Zero 2W
系统版本: 2024-10-22-raspios-bullseye-armhf
Python 版本:Python 3.9.2
已安装 pip3
支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480)
已安装 vim
已安装 git


学习目标:

  • HS-SR04B 超声测距

学习内容:

超声测距

import RPi.GPIO as GPIO
import time


def setup_gpio(trig, echo):
    """初始化 GPIO """
    GPIO.setmode(GPIO.BOARD)  # BOARD 编码
    GPIO.setup(trig, GPIO.OUT, initial=False)  # 输出模式 低电平
    GPIO.setup(echo, GPIO.IN)  # 输入模式


def cleanup_gpio():
    """ 清理引脚规则 """
    print("--- 重置引脚规则 ---")
    GPIO.cleanup()  # 释放 GPIO 资源,清除引脚规则


def distance(trig, echo):
    """
    测量距离
    @param trig: 发送超声波时间
    @param echo: 接收超声波时间
    @return: dist 距离 time_elapsed 收发时间间隔
    """
    # 初始化时间变量,确保它们总是有值
    start_time = time.time()
    stop_time = start_time  # 给 stop_time 赋初值,避免未赋值错误
    # 发送 trig 信号,持续 10us 的方波脉冲 (1s = 10^6 us)
    GPIO.output(trig, True)
    time.sleep(0.00001)
    GPIO.output(trig, False)

    # 记录发送超声波的时刻
    while GPIO.input(echo) == 0:
        start_time = time.time()

    # 记录收到超声波的时刻
    while GPIO.input(echo) == 1:
        stop_time = time.time()

    # 超声波间隔
    time_elapsed = stop_time - start_time
    # 声波的速度为 343m/s, 转化为 34300cm/s
    dist = (time_elapsed * 34300) / 2

    return dist, time_elapsed


def main():
    # 参数
    trig = 3  # 发送引脚
    echo = 5  # 接收引脚

    # 初始化
    setup_gpio(trig, echo)

    # 测距
    try:
        while True:
            dist, time_elapsed = distance(trig, echo)
            print("Measured Distance = {:.2f} cm".format(dist))
            print("Measured time = {:f} s".format(time_elapsed))
            time.sleep(0.5)
    except KeyboardInterrupt:
        print("Measurement stopped by User")
    finally:
        # 清理引脚规则
        cleanup_gpio()


if __name__ == "__main__":
    main()


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

学习参考:

  1. HS-SR04B 超声波模块
  2. 树莓派-超声波测距(HC-SR04)的使用
  3. 树莓派上使用HC-SR04超声波测距模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mason Lin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值