SR04超声波测距模块简略教程
本帖最后由 wjzc2006 于 2014-7-26 01:52 编辑今天试了一下SR04超声波测距模块,一次性成功,非常简便易用。下面是使用这款超声波测距模块的简略教程:
首先上图:
如图所示,此模块共有4只引出脚,从左往右,第一脚为VCC,由于该模块工作电压为5V,因此需接在树莓派GPIO的2号针上;第二只脚为TRIG,输入触发信号,我接在树莓派GPIO的第15号针上;第三只脚为ECHO,输出回响信号,我接在树莓派GPIO的第16号针上;第四只脚为接地脚,接在树莓派GPIO的第6号针上。
该模块的工作原理为,先向TRIG脚输入至少10us的触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则ECHO输出高电平回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式: 距离=高电平时间*声速(340M/S)/2。
下面是我写的测试代码:#! /usr/bin/python
# -*- coding:utf-8 -*-
import RPi.GPIO as GPIO
import time
def checkdist():
#发出触发信号
GPIO.output(22,GPIO.HIGH)
#保持10us以上(我选择15us)
time.sleep(0.000015)
GPIO.output(22,GPIO.LOW)
while not GPIO.input(23):
pass
#发现高电平时开时计时
t1 = time.time()
while GPIO.input(23):
pass
#高电平结束停止计时
t2 = time.time()
#返回距离,单位为米
return (t2-t1)*340/2
GPIO.setmode(GPIO.BCM)
#第15号针,GPIO22
GPIO.setup(22,GPIO.OUT,initial=GPIO.LOW)
#第16号针,GPIO23
GPIO.setup(23,GPIO.IN)
time.sleep(2)
try:
while True:
print 'Distance: %0.2f m' %checkdist()
time.sleep(3)
except KeyboardInterrupt:
GPIO.cleanup()该程序每3秒测试一次距离,用ctrl+c停止。
经测试,该模块测试较为准确,特别是测试物体表面平整时效果更好。
(不好意思,第一次发贴,还不太会用代码框,试了几次复制代码然后再粘贴到vi中,发现缩进全乱了,不知道是什么回事。如果你想试一下这个程序,粘贴后注意一下缩进吧!) 已使用,谢谢分享 不错的,可以运行 运行不了
页:
[1]