树莓派 HC-SRO4超声波测距模块的使用

先上个图

这个模块的针脚跟之前玩的那三个有所区别,除了VCC和GND两个针脚,还多了两个Trig和Echo针脚,分别是输出和输入,Trig我接的是20针脚,Echo是21

该模块的工作原理为,先向TRIG脚输入至少10us的触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则ECHO输出高电平回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式: 距离=高电平时间*声速(340M/S)/2。

下面是代码

 1 import RPi.GPIO as GPIO
 2 import time
 3 
 4 Trig_Pin = 20
 5 Echo_Pin = 21
 6 
 7 GPIO.setmode(GPIO.BCM)
 8 GPIO.setup(Trig_Pin, GPIO.OUT, initial = GPIO.LOW)
 9 GPIO.setup(Echo_Pin, GPIO.IN)
10 
11 time.sleep(2)
12 
13 def checkdist():
14     GPIO.output(Trig_Pin, GPIO.HIGH)
15     time.sleep(0.000015)
16     GPIO.output(Trig_Pin, GPIO.LOW)
17     while not GPIO.input(Echo_Pin):
18         pass
19     t1 = time.time()
20     while GPIO.input(Echo_Pin):
21         pass
22     t2 = time.time()
23     return (t2-t1) *340/2
24 
25 try:
26     while True:
27         print 'Distance:%0.2f m' % checkdist()
28         time.sleep(3)
29 except KeyboardInterrupt:
30     GPIO.cleanup()

发现那个捕捉的异常是针对Crtl+C触发的,之前我那几个模块如果正在输出就Ctrl+C的话还是会持续的输出,我只能另外写个脚本来关闭对应针脚的输出,有了这个异常捕捉,就方便多了

实际测出来的距离是偏低的

方法都是照抄的,原文地址:http://bbs.elecfans.com/forum.php?mod=viewthread&tid=451330

 

posted on 2015-07-02 00:36  LitDev  阅读(13890)  评论(0编辑  收藏  举报