电子开发 | 基础入门 | 电路原理图 | 梯形图实例 | PLC基础   《如果喜欢本站,请按 Ctrl+D 手动收藏!感谢您的支持》一起学习一起进步,电子开发王欢迎您!.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

★电路公式手册,最新版《电子电路公式计算器》,电路公式查询手册 电路公式计算器【电子从业人员必备手册】
☆十天学会单片机实例100 c语言 chm格式。资料内容详细,覆盖例子多,内容广【电子从业人员必备手册】
搜索: 您现在的位置: 电子开发网 >> 基础入门 >> Arduino开发学习 >> 正文

Arduino示例教程超声波测距实验含程序代码

作者:佚名    文章来源:网络整理    点击数:377    更新时间:2024/11/2

超声波传感器

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

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

HC-SR04超声波测距模块的接口定义

HC-SR04超声波测距模块的数据接口如上图,与Arduino uno的接口连接方法:VCC接+5V,GND接地,Trig接数字I/O接口5(也可以是其它),Echo接数字I/O接口4(也可以是其它)。

 

知识要点:

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() 函数获取到测距的结果,并计算出距被测物的实际距离。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
  日期: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); 
}

Tags:超声波测距,Arduino,超声波  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
    没有任何评论
电子开发网:汇集综合各类电子制作与电路图的网站,plc工控技术,模电数电知识,单片机EDA等等!荟萃电路图网站精华,为工程师创造价值。欢迎关注微信公众号:电子开发网!

三菱PLC软件 GX Wor

西门子200smartPLC选

模拟量转换工程量转

简述555定时器工作原

三菱plc控制步进电机

三菱FX3U系列—高速
 简单三极管逆变器
 TL494制作50HZ逆变
 80W简单的功放电路
 555制作的简易电子
 850热风枪电路图原
 直流12v荧光灯电路
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询