ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

树莓派超声波测距

2022-02-09 11:03:27  阅读:143  来源: 互联网

标签:树莓 Pin time GPIO 管脚 超声波 测距


树莓派超声波测距

需要材料:

树莓派4B

HC-SR04超声波测距模块

母对母线

超声波模块

简介:

HY-SRF05 超声波测距模块可提供2cm-450cm 的非接触式距离感测功能,

测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。

工作原理:

(1)采用IO口TRIG触发测距,给至少10us的高电平信号

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回

(3)有信号返回,则通过IO口ECHO输出一个持续时间的高电平,该持续时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速)/2 。 注:声速(340M/S)

该模块共有4只引脚,从左到右

第一脚为 vcc,接电源,5V,接在树莓派GPIO2号管脚

第二脚为TRIG,出发控制,信号输入,接在树莓派的GPIO16号管脚

第三脚为ECHO,回响信号输出。接在树莓派的GPIO18号管脚

第四脚接地。接在树莓派的GPIO14号管脚。

代码:

import RPi.GPIO as GPIO
import time

# 设置GPIO的引脚模式为BCM模式
GPIO.setmode(GPIO.BCM)

Trig_Pin = 23
Echo_Pin = 24

# 设置管脚的输入输出模式和初始电平
GPIO.setup(Trig_Pin,GPIO.OUT,initial = GPIO.LOW)
GPIO.setup(Echo_Pin,GPIO.IN)

time.sleep(1)

def checkdist():
#    GPIO输出一段不小于10us的电平
    GPIO.output(Trig_Pin,GPIO.HIGH)
    time.sleep(0.000015)
#    Trig_Pin回到低电平状态
    GPIO.output(Trig_Pin,GPIO.LOW)
    while not GPIO.input(Echo_Pin):
        pass
    # 一直等到Echo_Pin 有了反应,计算开始时间
    start = time.time()
    while GPIO.input(Echo_Pin):
        pass
    #只要echo_Pin不再接收,计算结束时间,并计算总时长
    end = time.time()
    # 计算距离
    leng = (end-start)*340/2
    return leng

try:
   while True:
    length = checkdist()
#    格式化成小数点后两位
    print(f"从基准至目标--距离>> {length:.2f}m") 
    
    time.sleep(3)
except KeyboardInterrupt:
    GPIO.cleanup()

标签:树莓,Pin,time,GPIO,管脚,超声波,测距
来源: https://www.cnblogs.com/Z-xing/p/15874143.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有