樹莓派系列應用:超聲波傳感器測距應用

超聲波傳感器是利用超聲波的特性研製而成的傳感器。超聲波是一種振動頻率高於聲波的機械波,由換能晶片在電壓的激勵下發生振動產生的,它具有頻率高、波長短、繞射現象小,特別是方向性好、能夠成為射線而定向傳播等特點。超聲波對液體、固體的穿透本領很大,尤其是在陽光不透明的固體中,它可穿透幾十米的深度。超聲波碰到雜質或分界面會產生顯著反射形成反射成回波,碰到活動物體能產生多普勒效應。因此超聲波檢測廣泛應用在工業中。

準備

  1. 樹莓派3b一套
  2. 擴展板一個
  3. 超聲波傳感器一個
  4. 杜邦線

超聲波接線:

樹莓派系列應用:超聲波傳感器測距應用

除了連接超聲波傳感器,還要連一個LED燈,LED燈正極串聯一個1kΩ的電阻,電阻的另一端接GPIO23接口。當超聲波測出的距離少於5cm,LED燈亮。

編寫代碼:

#!/usr/bin/env python
# encoding: utf-8
import RPi.GPIO as GPIO
import time
TRIG = 17
ECHO = 18
LedPin = 23
def setup():
GPIO.setmode(GPIO.BCM)
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.setup(LedPin, GPIO.OUT)
def distance():
GPIO.output(TRIG, 0)
time.sleep(0.000002)
GPIO.output(TRIG, 1)
time.sleep(0.00001)
GPIO.output(TRIG, 0)

while GPIO.input(ECHO) == 0:
a = 0
time1 = time.time()
while GPIO.input(ECHO) == 1:
a = 1
time2 = time.time()
during = time2 - time1
return during * 340 / 2 * 100
def Led(x):
if x <= 5 :
GPIO.output(LedPin, True)
else:
GPIO.output(LedPin, False)
time.sleep(0.3)
def loop():
while True:
dis = distance()
Led(dis)
print (dis, 'cm')
print ()

time.sleep(0.3)
def destroy():
GPIO.cleanup()
if __name__ == "__main__":
setup()
try:
loop()
except KeyboardInterrupt:
destroy()
樹莓派系列應用:超聲波傳感器測距應用


分享到:


相關文章: