树莓派论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3583|回复: 3
收起左侧

SR04超声波测距模块简略教程

[复制链接]
发表于 2014-7-26 01:32:58 | 显示全部楼层 |阅读模式
本帖最后由 wjzc2006 于 2014-7-26 01:52 编辑

  今天试了一下SR04超声波测距模块,一次性成功,非常简便易用。下面是使用这款超声波测距模块的简略教程:

  首先上图:
sr04.jpg


  如图所示,此模块共有4只引出脚,从左往右,第一脚为VCC,由于该模块工作电压为5V,因此需接在树莓派GPIO的2号针上;第二只脚为TRIG,输入触发信号,我接在树莓派GPIO的第15号针上;第三只脚为ECHO,输出回响信号,我接在树莓派GPIO的第16号针上;第四只脚为接地脚,接在树莓派GPIO的第6号针上。

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

  下面是我写的测试代码:
  1. #! /usr/bin/python
  2. # -*- coding:utf-8 -*-

  3. import RPi.GPIO as GPIO
  4. import time

  5. def checkdist():
  6.     #发出触发信号
  7.     GPIO.output(22,GPIO.HIGH)
  8.     #保持10us以上(我选择15us)
  9.     time.sleep(0.000015)
  10.     GPIO.output(22,GPIO.LOW)
  11.     while not GPIO.input(23):
  12.         pass
  13.     #发现高电平时开时计时
  14.     t1 = time.time()
  15.     while GPIO.input(23):
  16.         pass
  17.     #高电平结束停止计时
  18.     t2 = time.time()
  19.     #返回距离,单位为米
  20.     return (t2-t1)*340/2

  21. GPIO.setmode(GPIO.BCM)
  22. #第15号针,GPIO22
  23. GPIO.setup(22,GPIO.OUT,initial=GPIO.LOW)
  24. #第16号针,GPIO23
  25. GPIO.setup(23,GPIO.IN)

  26. time.sleep(2)

  27. try:
  28.     while True:
  29.             print 'Distance: %0.2f m' %checkdist()
  30.             time.sleep(3)
  31. except KeyboardInterrupt:
  32.     GPIO.cleanup()
复制代码
该程序每3秒测试一次距离,用ctrl+c停止。

  经测试,该模块测试较为准确,特别是测试物体表面平整时效果更好。

  (不好意思,第一次发贴,还不太会用代码框,试了几次复制代码然后再粘贴到vi中,发现缩进全乱了,不知道是什么回事。如果你想试一下这个程序,粘贴后注意一下缩进吧!)
回复

使用道具 举报

发表于 2014-7-26 02:12:24 | 显示全部楼层
已使用,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2014-7-27 16:28:30 | 显示全部楼层
不错的,可以运行
回复 支持 反对

使用道具 举报

发表于 2014-8-15 19:44:20 | 显示全部楼层
运行不了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|树莓派论坛 ( 粤ICP备15075382号-1  

GMT+8, 2024-11-23 03:46 , Processed in 1.328125 second(s), 30 queries , Gzip On.

Powered by Shumeipai.net! X3.2

© 2001-2015 树莓派论坛安全联盟

快速回复 返回顶部 返回列表