1. 程式人生 > >樹莓派 超聲波模組HC-SR04的應用

樹莓派 超聲波模組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)
    

慢慢來吧