樹莓派 超聲波模組HC-SR04的應用
阿新 • • 發佈:2018-11-08
樹莓派 超聲波模組HC-SR04的應用
第一次使用Markdown編輯器
空格是很重要的呦!
材料:
- 樹莓派B型
- 麵包板
- HC-SR04超聲波模組
HC-SR04模組的工作原理
- 採用IO口TRIG觸發測距,給至少10us的高電平訊號;
- 模組自動傳送8個40khz的方波,自動檢測是否有訊號返回;
- 有訊號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。
- 測試距離=(高電平時間*聲速(340M/S))/2;
- 詳細內容請看 https://wenku.baidu.com/view/57ed956858fafab069dc02fc.html
樹莓派 B型的針腳圖
HC-SR04模組接線
- Vcc 接+5V
- Echo 接 GPIO 針腳
- Trig 接 GPIO 針腳
- 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)