FRC | RRF Prog 132 超声波传感器

06/21/2019

什么是超声波传感器

超声波传感器是利用超声波信号来测量距离的传感器。超声波是振动频率高于 20kHz 的机械波,有频率高、波长短、绕射现象小、方向性好等特点。超声波对液体、固体的穿透本领很大,尤其是在不透光的固体中。

超声波碰到障碍会产生显著反射形成反射回波,通过测量发送信号与接收回波之间的时间可以计算出障碍与传感器之间的距离。

FRC 中常用的超声波有两种:HC-SR04 和 xxxxx(待补充)

HC-SR04

FRC | RRF Prog 132 超声波传感器_第1张图片
HC-SR04

HC-SR04 属于 ping 类型的超声波传感器。当收到触发信号时,传感器发送一个超声波脉冲,而收到脉冲回声的时候再通过回声针脚发送一串能够表示回波时间长度的信号。

电路连接

HC-SR04

HC-SR04 模块有四根针脚,分别为供电正极(VCC),触发(Trig),回声(Echo)和供电负极(GND)。

供电正负连接到 RoboRIO 的 DIO 对应针脚上,触发和回声需要分别连接到不同的 DIO 信号端口上。

FRC | RRF Prog 132 超声波传感器_第2张图片
RoboRIO

程序

HC-SR04

import edu.wpi.first.wpilibj.Ultrasonic;
...

public class Robot extends TimedRobot {
  private Ultrasonic ultra;          // 声明 Ultrasonic 类型的 ultra 变量
  ...
  
  @Override
  public void robotInit() {
    ultra = new Ultrasonic(0, 1);  // 创建 Ultrasonic 对象
                                   // constructor 中的两个数字分别为 Trig 和 Echo 针脚连接的 DIO 端口号
    ultra.setAutomaticMode(true);  // 设置自动模式为开。自动模式下超声波会一直运行并读取距离值
    ...
  }
  ...
      
  @Override
  public void robotPeriodic() {
    double range = ultra.getRangeMM(); // 通过 .getRangeMM() 方法读取超声波的距离值,并返回计算后转换成的毫米数,是双精度浮点数类型
    SmartDashboard.putNumber("Ultra Distance", range);  // 将距离值传递到 SmartDashboard 上
    ...
  }
  ...
}

你可能感兴趣的:(FRC | RRF Prog 132 超声波传感器)