Arduino平台软硬件原理及使用——SR04超声波传感器的使用

文章目录:
一、超声波传感器工作原理
二、SR04超声波库的使用
三、SR04超声波传感器在Arduino中的使用

一、超声波传感器工作原理

超声波传感器
如上图所示:HCSR04超声波传感器拥有4个针脚,除了VCC接正极、GND接负极外,还有两个引脚“Trig”及“Echo”;
其中“Trig”用于控制发射超声波,“Echo”用于接收反射波。

超声波原理
其工作原理如上图:首先传感器发射超声波,并计时,当超声波接触到障碍物会被反射,当传感器接收到反射波,计时结束,然后利用距离、速度、时间公示进行计算,得到传感器到障碍物间的距离

二、SR04超声波库的使用

在使用SR04超声波传感器之前,需要先配置好库文件
一般这种较基础的库文件,在下载Arduino软件后会自动配置好,可以根据下图所示检验是否有超声波传感器的库:
在这里插入图片描述
如果在示例文件中存在SR04超声波传感器的示例文件,则一般已配置好库文件。
在这里插入图片描述
如果未配置好库文件,则可使用2.0以后版本的Arduino软件直接搜索然后安装;
若Arduino软件版本较旧,则可参照Arduino平台软硬件原理及使用——开源库的使用来进行配置安装。
在这里插入图片描述
由于不同的库文件贡献者所创建库的差异性,可以通过按下【Alt/cmd键】+【点击库名称】的方法来打开其头文件

#pragma once
#include <Arduino.h>

class HCSR04
{
public:
	HCSR04(int out, int echo);			//initialisation class HCSR04 (trig pin , echo pin)
	HCSR04(int out, int echo[], int n); //initialisation class HCSR04 (trig pin , echo pin)
	~HCSR04();							//destructor
	float dist() const;					//return curent distance of element 0
	float dist(int n) const;			//return curent distance of element n

private:
	void init(int out, int echo[], int n); //for constructor
	int out;							   //out pin
	int *echo;							   //echo pin list
	int n;								   //number of el
};

如上代码则为此库文件的头文件,其可使用的方法均位于public公有类里面。

三、SR04超声波传感器在Arduino中的使用

将SR04超声波传感器与Arduino进行连接,除了VCC及GND分别接正负极外;

“Trig”与数字端口D5连接
“Echo”与数字端口D4连接

如下图所示:
在这里插入图片描述
完成以下程序:

//此程序功能为将SR04超声波传感器测的的距离数值,通过串口进行输出

#include<HCSR04.h>  //导入超声波SR04库
HCSR04 ultrasonic(5,4);  //声明一个对象,其名为ultrasonic(自定义的名称)
                      //4号为“Echo”,5号为“Trig”

void setup()
{
	pinMode(4, INPUT);  //设置“Echo”接入的引脚为输入
	pinMode(5, OUTPUT);  //设置“Trig”接入的引脚为输出
	Serial.begin(9600);  //串口监视器初始化
}

int distance;  //定义一个名为“distance”的变量,用于存放检测的距离数值

void loop()
{
	distance = ultrasonic.dist();  //调用了超声波库里的“dist()”方法,获得检测距离数值
	Serial.print(distance);  //输出distance数值,且不换行
	Serial.println(" cm");  //紧接着输出单位,且换行
}

将程序上传之前先对以上程序的部分代码块进行解释:
1.“HCSR04 ultrasonic(4, 5)”我们称之为对象的实例化,即HCSR04为超声波库的名称,在其后自定义一个名称“ultrasonic”(即超声波的英文,可自定义任意名称),并且不同的实例化过程有不同的参数要输入,比如HCSR04后需要加入“Trig”和“Echo”所接引脚的端口号(我们分别接到了D5和D4),从而在后述程序中,如果要调用HCSR04库内的方法的话,仅需使用“ultrasonic.方法名()”,即可。

2.“distance = ultrasonic.dist()”这一代码块是调用了超声波传感器中获取距离的方法“dist()”,与前面int定义的distance截然不同,int定义的变量可取任意名称,仅为变量名,但“Distance()”为超声波传感器固定的方法。
接下来将上述程序上传至Arduino板,并且打开串口监视器,观测所测的数值是否准确。
在这里插入图片描述
另外HCSR04型号的超声波传感器的测量范围官方声称为2cm ~ 450cm,因此超出这个范围的数值会不准确。
关于SR04超声波传感器的具体实例可参考文章——Arduino项目式编程教学第四章——超声波测距

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪博hopes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值