树莓派系列应用:超声波传感器测距应用

超声波传感器是利用超声波的特性研制而成的传感器。超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中,它可穿透几十米的深度。超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。因此超声波检测广泛应用在工业中。

准备

  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()
树莓派系列应用:超声波传感器测距应用


分享到:


相關文章: