树莓派 超声波模块HC-SR04的应用

树莓派 超声波模块HC-SR04的应用

第一次使用Markdown编辑器

空格是很重要的呦!

材料:

  1. 树莓派B型
  2. 面包板
  3. HC-SR04超声波模块

HC-SR04模块的工作原理

  1. 采用IO口TRIG触发测距,给至少10us的高电平信号;
  2. 模块自动发送8个40khz的方波,自动检测是否有信号返回;
  3. 有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
  4. 测试距离=(高电平时间*声速(340M/S))/2;
  5. 详细内容请看 https://wenku.baidu.com/view/57ed956858fafab069dc02fc.html

树莓派 B型的针脚图

在这里插入图片描述

HC-SR04模块接线

  1. Vcc 接+5V
  2. Echo 接 GPIO 针脚
  3. Trig 接 GPIO 针脚
  4. Gnd 接 0V

python 编程

  • 使用wiring模块
import wiringpi as gpio
import time
from wiringpi import GPIO

Trig=6
Echo=7
gpio.wiringPiSetup()#初始化为wiringpiGPIO
gpio.pinMode(Trig,GPIO.OUTPUT)#7脚为输出
gpio.pinMode(Echo,GPIO.INPUT)#6脚为输入

def jvli():
    t1=0
    t2=0
    gpio.digitalWrite(Trig,GPIO.HIGH)
    gpio.delay(10)
     gpio.digitalWrite(Trig,GPIO.LOW)
   
    while gpio.digitalRead(Echo)==0:
        pass
    t1=gpio.micros()
    #t1 = time.time()
    #print(t1)
    while gpio.digitalRead(Echo)==1:
        pass
    t2=gpio.micros()
    #t2 = time.time()
#    print(t2)

      
    distance=343*(t2-t1)/10000/2
    print("distance :{} cm".format(distance))
    print("-"*50)
  
for i in range(10):
   jvli()
    time.sleep(2)
  • 使用RPI.GPIO模块
import RPi.GPIO as GPIO
import time

#初始化设置
GPIO.setmode(GPIO.BCM)
Trig = 25
Echo = 4
GPIO.setup(Trig,GPIO.OUT)
GPIO.setup(Echo,GPIO.IN)

for i in range(10):
     # 发送 trig 信号  持续 10us 的方波脉冲
    GPIO.output(Trig,True)
    time.sleep(0.00001)
    GPIO.output(Trig,False)
 
    # 等待低电平结束,然后记录时间。
    while (GPIO.input(Echo)==0):
            pass
    start = time.time()

    #等待高电平结束,然后记录时间。
    while (GPIO.input(Echo) == 1):
            pass
    end = time.time()

    duration = end - start
    distance = duration * 34300/2
    distance = round(distance,2)
    print("Distance: {}cm".format(distance))
    print("-"*50)
    

慢慢来吧

猜你喜欢

转载自blog.csdn.net/qq_43143240/article/details/83821587
今日推荐