Arduino示例教程超声波测距实验

超声波传感器

超声波是一种超出人类听觉极限的声波即其振动频率高于20 kHz的机械波。超声波传感器在工作的时候就是将电压和超声波之间的互相转换,当超声波传感器发射超声波时,发射超声波的探头将电压转化的超声波发射出去,当接收超声波时,超声波接收探头将超声波转化的电压回送到单片机控制芯片。超声波具有振动频率高、波长短、绕射现象小而且方向性好还能够为反射线定向传播等优点,而且超声波传感器的能量消耗缓慢有利于测距。在中、长距离测量时,超声波传感器的精度和方向性.都要大大优于红外线传感器,但价格也稍贵。

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

知识要点:

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()函数获取到测距的结果,并计算出距被测物的实际距离。

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

// 设定SR04连接的Arduino引脚
const int TrigPin = 2;
const int EchoPin = 3;
const int LedPin = 17;
float distance; 

void setup()                 // 初始化串口通信及连接SR04的引脚
{
     Serial.begin(9600);
      pinMode(TrigPin, OUTPUT);
     pinMode(TrigPin, OUTPUT);
     pinMode(EchoPin, INPUT);  // 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
    Serial.println("Ultrasonic sensor:");
} 

void loop()
{
    // 产生一个10us的高脉冲去触发TrigPin
    digitalWrite(LedPin,HIGH);
    delayMicroseconds(2);
    digitalWrite(TrigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin,LOW); 

    // 检测脉冲宽度,并计算出距离
    distance = pulseIn(EchoPin,HIGH);
    Serial.print(distance);
    Serial.print("ms");
    distance = distance/58;
    distance = (int(distance*100.0))/100.0; //保留两位小数 

    Serial.print(".....distance is:");
    Serial.print(distance);
    Serial.print("cm");
    Serial.println();
    delay(1000);
}

  

时间: 2024-08-11 18:22:21

Arduino示例教程超声波测距实验的相关文章

Arduino系列之超声波测距模块代码(一)

这里我将简单介绍超声波测距模块 SR04超声波传感器: 是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波.范围在3-450cm. 工作原理: 超声波发射器向某一方向发射超声波,在发射的同时开始计时: 超声波在空气中传播,途中遇到障碍物则立即返回,超声波接收器收到反射波则立即停止计时. 声波在空气中传播速度为340m/s,根据计时器记录时间t,即可算出发射点距离障碍物的距离S, 即S=340m/s*t/2,这就是所谓的时间差测距法. 超声波模块的使用及时序图: 使

树莓派超声波测距+蜂鸣器(c语言)

前边我们已经详细的讲解了树莓派控制超声波模块测距(http://www.cnblogs.com/yuemo/p/8888342.html)和超声波控制蜂鸣器模块发声(http://www.cnblogs.com/yuemo/p/8906111.html). 今天我们就来看看怎么把两个模块全都应用起来,做一个防盗装置. 先来看一下各个引脚的连接方式(需要七根母对母的杜邦线): 超声波模块: 1.Vcc:接5V电源(接1号引脚) 2.Trig:输出端口(接16号引脚) 3.Echo:输入端口(接18

[自娱自乐] 3、超声波测距模块DIY笔记(三)

前言 上一节我们已经研究了超声波接收模块并自己设计了一个超声波接收模块,在此基础上又尝试用单片机加反相器构成生成40KHz的超声波发射电路,可是发现采用这种设计的发射电路存在严重的发射功率太低问题,对齐的情况下最多只有10CM.本节主要介绍并制造一种大功率超声波发射装置~ 目录 一.浪里淘金,寻找最简超声波功率提高方案 1.1.优化波形发生程序 1.2.尝试各种其他超声模块方案 1.3.用三极管放大信号 1.4.MAX232放大信号方案 二.步步为营,打造高效准确超声测距算法 2.1.接收MCU

[自娱自乐] 2、超声波测距模块DIY笔记(二)

前言 上一节我们已经大致浏览下目前销售的超声波测距模块同时设计了自己的分析电路,这次由于我买的电子元件都到了,所以就动手实验了下!至写该笔记时已经设计出超声波接收模块和超声波发射模块,同时存在超声波发射模块功率太小的问题,下面主要做该过程的总结! 一.尝试找出一个简单的超声波接收电路: >_<" 首先根据我现有的电子元件,最终找到一个比较适合的简单设计方法:这里用一个芯片CX20106A也就是上一节我说的这种方案简单但是不利于理解超声波接收部分的具体细节!但是为了方便设计,我还是选择

ARM-Linux定时器、中断驱动--超声波测距初试

最近要实验用到超声波测距,一下子着手驱动设计,简直无从下手. 由于没有接触过裸板程序,arm板底子薄弱,所以很多东西写的不完善,在加上这是自己的第一个驱动程序,写起来也比较吃力.多亏了很多前辈分享的一些代码,参考学习下,写了一个自己的驱动程序,下面特此分享出来. 目前还有很多东西不完善,我的模块通电就开始工作,至于10us的脉冲信号激发,我是没有用上,日后要好好调试一番,下面这个驱动就没有涉及Trig触发信号. 看别人的代码是一件很辛苦的事情,下面我尽可能的把注释写完整.毕竟这也是从许多前辈那借

.NET Core R2安装及示例教程

.NET Core R2安装及示例教程 前言 前几天.NET Core发布了.NET Core 1.0.1 R2 预览版,之前想着有时间尝试下.NET Core.由于各种原因,就没有初试.刚好,前几天看到.NET Core发布新版本了,决定要去一探究竟.于是乎,就立马去官网查找相关的信息,为初探做准备. 下面就开始今天的内容,有两个部分:安装和创建示例程序. 安装 本人使用的是Windows 10 64位系统,安装过Visual Studio 2015,如果没有安装,请先安装. 下载安装文件 进

单片机 之 超声波测距

超声波测距:利用超声波传感器实现距离测量(提供超声波模块) 代码暂时不开源! #include<reg52.h> #include <intrins.h> // /*-----------------中断服务函数-------------------*/ void T_0()interrupt 1 { }

[自娱自乐] 4、超声波测距模块DIY笔记(四)——终结篇&#183;基于C#上位机软件开发

前言 上一节我们已经基本上把超声波硬件的发射和接收模块全部做好了,接下来我们着手开发一个软硬结合的基于C#的平面定位软件! 目录 一.整体思路 二.效果提前展示 2-1.软件部分展示 2-2.硬件部分展示 三.基于C#的客户端软件说明 3-1.整体框架介绍: 3-2.部分技术细节介绍 3-2-1.串口操作 3-2-2.JiSuan函数说明及核心算法介绍 四.阶段小结 五.相关链接 一.整体思路 >_<" 如下图,利用我们上三节开发的超声波发射与接收设备构成一个:2固定接收头+1可移动

超声波测距模块

要做的事:两个视频介绍.算坐标 疑问:探测频率.和探测最大耗时.探测最大耗时里面的返回值范围.返回距离比返回时间耗时长(且5m和10m一样) 1.探测频率:500Hz,即每秒500次,一次2ms. 若安装12个,则扫描一圈24ms. 若机器人的速速为1m/s,24ms前进24mm=2.4cm 2.探测时间:传输时间+1ms, 若10m=29ms+1ms=30ms,一圈=30ms*12=360ms=0.36s,机器人前进36cm. 若3m=9ms+1ms=10ms,一圈=10ms*12=120ms