树莓派超声波测距

编程

树莓派超声波测距">树莓派超声波测距

需要材料:

树莓派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()

以上是 树莓派超声波测距 的全部内容, 来源链接: utcz.com/z/520196.html

回到顶部