尽管网上已经有很多使用超声波测距的案例,但为了配合我们的前面用Processing写好的雷达扫描程序付诸实践,所以我们还是要把超声波的测距的完整步骤在这里列出来,以供初学者来参考,尤其是让前面看到了Processing雷达扫描程序而不知道如何实践硬件部分的小伙伴们有依样画葫的“葫芦”。

一、超声波传感器(Ultrasonic Sensor)
我们常用的超声波传感器有好几种,我这里有两种,一种是SR04、SR05 ,(US-100)Y401 US-015等,这些都是做好了电路集成的模块了。所以叫做超声波传感器模块。如下图:


但真正的传感器没有模块的,就是一个发送一个接收(对应到我们上面的模块就是Trig和Echo两个脚了)

实物连接图

了解外形之后,我们还要来看看她是如何配合工作的。其实说到超声波,我们就会想到蝙蝠,是的,它的工作原理就是模仿蝙蝠的。先发出一个声音,然后在接收返回的声音,通过发出和返回的时间差来可以计算出距离,就这么简单。
所以,我们就要有一个机制,发出多长的声波信号(和发电报一样),回收采集的理论上应该是发出的同时就要采样收集了。
但我们的单片机或者这里说的arduino采用的是单线程的程序运行机制,故而发送的同时肯定不能收集,一般是等发送完毕后开始收集,所以这个模块中则有一个缓冲机制,将收到的信号暂时存储等待设备来读取。

那么发送多长的信号呢?一般是10个毫秒。所以这里必须有触发脚Trig拉高电平10毫秒的动作;我们从图中可以看到,一共有四个脚,分别为VC,Trig,Echo,GND,两边的两个为接电源的正负极,中间的两个一个发送一个接收,可以连接在任意信号端口是包括1到13口及A0~A5,当日在程序中也必须对应设置好。

二、代码实现
编写代码我们一如既往的要使用串口,这里不再赘述。使用超声波模块,我们要特别注意pluseIn函数的使用,它用于检测引脚输出的高低电平的脉冲宽度。
pulseIn(pin, value) //value为LOW或者HIGH
pulseIn(pin, value, timeout)
可以看出,这和我们之前使用到的digitalWrite基本相同,一般都是两个参数,一个参数是管脚一个是高低电平的设定。

好了,了解好这些了,我们可以看看代码:

int TrgPin = A0;
int EcoPin = A1;
float dist;
void setup()
{
Serial.begin(9600);
//设置TrgPin为输出状态
pinMode(TrgPin, OUTPUT);
// 设置EcoPin为输入状态
pinMode(EcoPin, INPUT);
}
void loop()
{
digitalWrite(TrgPin, LOW);
delayMicroseconds(8);
digitalWrite(TrgPin, HIGH);
// 维持10毫秒高电平用来产生一个脉冲
delayMicroseconds(10);
digitalWrite(TrgPin, LOW);
// 读取脉冲的宽度并换算成距离
dist = pulseIn(EcoPin, HIGH) / 58.00;
Serial.print("Distance:");
Serial.print(dist);
Serial.println("cm");
delay(300);
}

关于距离中除以58的说明:
58也很好理解,声音在干燥、摄氏 20度的空气中的传播速度大约为343米/秒,合34,300厘米/秒。或者,我们作一下单位换算,34,300除以1,000,000厘米/微秒。即为:0.0343厘米/微秒,再换一个角度,1/(0.0343 厘米/微秒)即:29.15 微秒/厘米。这就意味着,每291.5微秒表示10CM的距离。1厘米就是29.15微秒。但是发送后到接收到回波,声音走过的是2倍的距离呀。
所以实际距离就是1厘米,对应58.3微秒。实际上整个测距过程是测的发出声波到收到回波的时间,你的程序里的第一个distance实际上是时间us。所以换成距离cm,要除以58。当然除以58.3可能更精确。所以程序中用 pulseIn(EcoPin, HIGH) / 58.00获取测得的距离。

运行效果如下:

Arduino中使用超声波测距实验相关推荐

  1. arduino UNO 与 超声波测距模块 实验详情

    US-015 超声波测距模块 超声波传感器 US-020升级版 送全套资料 资料下载地址:http://pan.baidu.com/s/1c0AfkIG US-015超声波测距模块 1. 概述 US- ...

  2. 利用STM32CubeMX配置基于STMF32F407的FREERTOS操作系统控制直流电机速度和超声波测距实验

    前两周做基于STM32F407芯片的嵌入式系统设计的实验,主要完成利用超声波测距(电脑上用串口显示超声波所测距离,障碍物近于20cm时,使LED灯闪烁,并且可以通过串口更改报警距离)和利用编码器读取电 ...

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

    这里我将简单介绍超声波测距模块 SR04超声波传感器: 是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波.范围在3-450cm. 工作原理: 超声波发射器向某一方向发 ...

  4. 51单片机 普中V2 超声波测距 报警 显示 基于MCS51单片机的超声波测距模块的开发

    基于MCS51单片机的超声波测距模块的开发 采用C51程序设计语言,完成下列功能要求. l 必选功能: (1) 超声波模块和单片机的接口设计,画出完整的电路原理图.(15分) (2) 开发板上电时,显 ...

  5. 基于VHDL超声波测距实验

    共有两个代码文件detect_distance_3和process_4添加到quartus II 9.0 工程文件中, 这两个文件分别对应作业中3和4 按照软件使用流程,编译,仿真添加激励信号,出波形 ...

  6. Arduino读取HC-SR04超声波测距传感器数据附带滤波

    目录 前言 程序 1.无滤波程序 2.低通滤波器滤波程序 3.低通滤波器滤波程序(弃掉高幅噪声) 4.中位值滤波 5.中位值平均滤波 总结 前言 传感器的接线非常简单,一共四根线 vcc和gnd按照要 ...

  7. android 超声波测距,干货!!超声波测距实验--蓝桥杯备战

    [C] 纯文本查看 复制代码#include #include #define uchar unsigned char #define uint unsigned int #define someno ...

  8. Micropython——HC-SR04超声波测距模块

    文章目录 HC-SR04超声波测距模块 超声波测距原理 接线 代码 HC-SR04超声波测距模块 超声波测距模块HC-SR04是市面上常见的超声波测距模块,价格便宜,精度高,可提供2cm-400cm的 ...

  9. matlab仿真超声波测距,汽车倒车雷达的Simulink仿真测试

    龙源期刊网 http://www.doczj.com/doc/bcabe4130d22590102020740be1e650e53eacf2a.html 汽车倒车雷达的Simulink仿真测试 作者: ...

最新文章

  1. Nginx配置文件粗解
  2. 松耦合和紧耦合的架构设计、性能对比
  3. 一致性问题和Raft一致性算法——一致性问题是无法彻底解决的,可以说一个分布式系统可靠性达到99.99…%,但不能说它达到了100%...
  4. 用深度学习解决大规模文本分类问题
  5. 2011年 11月底-12月初 51Aspx源码发布详情
  6. 关 于 正 则 表 达 式 的 类 习 题
  7. Catalog Service - 解析微软微服务架构eShopOnContainers(三)
  8. vb listview扁平表头的列表框
  9. Asp.net2.0页面的生命周期
  10. web通用组件+Axure原型+Axure元件库+Axure后台管理系统框架模板+大屏数据可视化元件库+智慧社区管理系统大屏+图表组件+表单组合+智慧数据看板+通用大屏图表原件库+电脑端常用组件
  11. 讲座笔记 | 批判性思维和论文写作
  12. 活字格企业Web应用生成器荣获2017年度优秀软件产品
  13. Windows中Redis的下载安装与修改密码并启动
  14. Linux下CAN总线通信调试记录
  15. BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition
  16. 2021中国薪酬指南:全球半数雇主计划加薪并恢复至正常招聘水平
  17. MAML中few-shot (小样本)learning中数据集的处理
  18. 如何制作DOS启动盘
  19. 太原理工大学系统分析与设计实验报告实验室设备_塔斯马尼亚大学和皇家墨尔本理工大学的实验室医学硕士从学术和移民角度来看,有什么区别?选择哪一个更好?...
  20. 【概率论与数理统计】猴博士 笔记 p17-20 一、二维连续型:已知F,求f;已知f,求f

热门文章

  1. CSP-S 模拟 19/10/11
  2. 中国公民身份证号码校验
  3. 【数据库系统】第一部分 数据库基础(3) 关系数据库标准语言SQL(7) 视图
  4. WIN7下搭建CORDOVA环境
  5. Cris 玩转 Linux 之 Deepin 迁移全过程记录
  6. 红酒生产车间空调系统程序设计
  7. 自定义Android桌面小部件
  8. vscode中php cs fixer_vscode 中使用php-cs-fixer和PHP Formatter 插件规范化PHP代码
  9. 2022年医院三基考试医学微生物学和免疫学练习题及答案
  10. Java获取客户端请求电脑IP,操作系统等等各种信息