zoukankan      html  css  js  c++  java
  • 树莓派 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

  • 相关阅读:
    【CF1528D】It's a bird! No, it's a plane! No, it's AaParsa!
    【CF1528C】Trees of Tranquillity
    【CF1528B】Kavi on Pairing Duty
    【洛谷P5443】桥梁
    【CF gym102759I】Query On A Tree 17
    ansible-playbook批量修改密码
    kubernetes集群简单实例搭建
    UiPath屏幕抓取Screen Scraping的介绍和使用
    学习廖雪峰的Git教程3--从远程库克隆以及分支管理
    学习廖雪峰的Git教程2--远程仓库
  • 原文地址:https://www.cnblogs.com/New-world/p/4614954.html
Copyright © 2011-2022 走看看