arduino loar_arduino超声波模块(一)

一、超声波模块:(HC-SR04)

f305011c82cc83db3c302944ba99a2ca.png

       超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

超声波测距原理:时间差测距法

详解:声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,

                            即:s=340m/s× t / 2

接口定义:

GND
VCC
Trig(触发信号输入)       
Echo(回响信号输出) 

二、工作原理:

        1)通过某个引脚(IO)给至少10us的高电平信号触发测距;

        2)触发测距以后模块自动发送8个40khz的方波,自动检测是否有信号返回;

         3)如果有信号返回,通过IO输出一高电平,高电平持续时间就是超声波从发射到返回的时间

         4)测试距离=(高电平时间*声速(340M/S))/2;

工作原理详解:

316f59174896f4a55ca326874baa2160.png

三、超声波基本功能程序调试

// Trig接Arduino板的Digital 5口,触发测距;Echo接Digital 4口,接收距离信号。int inputPin=4; // 定义超声波信号接收接口int outputPin=5; // 定义超声波信号发出接口void setup(){Serial.begin(9600);//串口波特率pinMode(inputPin, INPUT);pinMode(outputPin, OUTPUT);}void loop(){digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μsdelayMicroseconds(2);digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μsdelayMicroseconds(10);digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平int distance = pulseIn(inputPin, HIGH); // 读出脉冲时间distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)Serial.println(distance); //输出距离值 delay(50); }

四、程序详解

1、根据时序图启动超声波模块功能

digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μsdelayMicroseconds(2);digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μsdelayMicroseconds(10);digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平

2、将接收到的数据放到定义的变量中,并利用公式进行计算测量的距离

int distance = pulseIn(inputPin, HIGH); // 读出脉冲时间distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)

3、上位机显示测量的距离

distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)Serial.println(distance); //输出距离值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值