文章目录:
一、超声波传感器工作原理
二、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项目式编程教学第四章——超声波测距