超声波测距实验

超声波测距实验

超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=340m/s× t / 2 。这就是所谓的时间差测距法。本实验利用超声波测得的距离从串口中显示。
这里写图片描述

元器件清单

  • Aduino UNO × 1
  • OJ传感器扩展板× 1
  • USB数据线 × 1
  • 1p杜邦线 × 4
  • 超声波传感器 × 1

知识要点

  • pulseIn():用于检测引脚输出的高低电平的脉冲宽度。
  • pulseIn(pin, value)
  • pulseIn(pin, value, timeout)
  • Pin—需要读取脉冲的引脚
  • Value—需要读取的脉冲类型,HIGH或LOW
  • Timeout—超时时间,单位微秒,数据类型为无符号长整型

使用方法及时序图

这里写图片描述
这里写图片描述
这里写图片描述

  1. 使用Arduino采用数字引脚给SR04的Trig引脚至少10μs的高电平信号,触发SR04模块测距功能;
  2. 触发后,模块会自动发送8个40KHz的超声波脉冲,并自动检测是否有信号返回。这步会由模块内部自动完成。
  3. 如有信号返回,Echo引脚会输出高电平,高电平持续的时间就是超声波从发射到返回的时间。此时,我们能使用pulseIn()函数获取到测距的结果,并计算出距被测物的实际距离。

SR04与Arduino接线示意图

这里写图片描述

Arduino示例程序

/*
[url=http://www.openjumper.com/]www.openjumper.com[/url]
日期:2013.5.18
IDE 版本:1.0.1
功能:利用SR04超声波传感器进行测距,并用串口显示测出的距离值
*/

// 设定SR04连接的Arduino引脚
const int TrigPin = 2; 
const int EchoPin = 3; 
float distance; 
void setup() 
{   // 初始化串口通信及连接SR04的引脚
        Serial.begin(9600); 
        pinMode(TrigPin, OUTPUT); 
    // 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
        pinMode(EchoPin, INPUT); 
    Serial.println("Ultrasonic sensor:");
} 
void loop() 
{ 
    // 产生一个10us的高脉冲去触发TrigPin 
        digitalWrite(TrigPin, LOW); 
        delayMicroseconds(2); 
        digitalWrite(TrigPin, HIGH); 
        delayMicroseconds(10);
        digitalWrite(TrigPin, LOW); 
    // 检测脉冲宽度,并计算出距离
        distance = pulseIn(EchoPin, HIGH) / 58.00;
        Serial.print(distance); 
        Serial.print("cm"); 
        Serial.println(); 
        delay(1000); 
}

运行效果

下载完程序后,打开串口监视器,并将超声波传感器对向需要测量的物体,即可看到当前超声波传感器距物体的距离

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值