树莓派超声波测距

树莓派超声波测距

需要材料:

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

推荐这些文章:

GPIO模块:点亮led灯

@;将引脚都设置为输出模式ldr r1,=0x11000c40ldr r2,[r1]bic r2,#0xf0000000orr r2,#0x10000000str r2,[r1]
ldr r1,=0x11000c20ldr r2,[r1]bic r2,#0x0000000forr r2,#0x00000001str r2,[r1]
ldr r1,=0x114001E0ldr r2,[r1]bic r2,#0x000f0000orr r2,#0x00010000str r2,[r1]
ldr r1,=0x114001E0ldr r2,[r1]bic r2,#0x00f00000orr r...

100-CH32V307(WCH单片机)学习开发-GPIO输出高低电平

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH32V307VCT6" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 
测试(API函数和STM32封装的一样)
1,开发板上的led连接了PD3

 
 
2,控制PD3 输出高低电平(把以下程序直接拷贝到自己工程运行)

 
 
 

#in...

文章标题:树莓派超声波测距
文章链接:https://www.dianjilingqu.com/51282.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>