Arduino开发板使用超声波传感器HC-SR04的完整指南
一、HC-SR04超声波传感器简介
HC-SR04超声波传感器使用声纳来确定物体的距离,工作原理类似与蝙蝠。它提供出色的非接触范围检测,高精度和稳定的读数,以及易于使用的封装。测量范围从2厘米到400厘米或1英寸到13英尺。它的工作过程不受太阳光或黑色材料的影响(虽然布料之类的声学软材料很难检测)。它配有超声波发射器和接收器模块。
二、主要特征
- 电源:+ 5V DC
- 静态电流:<2mA
- 工作电流:15mA
- 有效角度:<15°
- 测距:2厘米 - 400厘米/ 1英寸 - 13英尺
- 分辨率:0.3厘米
- 测量角度:30度
- 触发输入脉冲宽度:10uS
- 尺寸:45mm x 20mm x 15mm
三、工作过程
- 发射器发送信号:一段高频声音
- 当信号遇到一个物体时,它会被反射
- 然后发射器接收该信号
四、示例
以下是一个Arduino开发板使用超声波传感器HC-SR04的完整示例
1、所需硬件
- 超声波传感器HC-SR04
- Arduino UNO开发板
- 面包板
- 跳线
2、原理图
3、实际接线图
这里利用提供的硬件将按照原理图进行接线,如图:
4、代码
//为超声波传感器的Trig和echo引脚创建变量。
//trig引脚连接到数字引脚11,echo引脚连接到数字引脚12。
int trigPin = 11;
int echoPin = 12;
/*
变量duration保存了信号发射和接收之间的时间。
变量cm将以厘米为单位保存距离,
变量inch将以英寸为单位保存距离。
*/
long duration, cm, inches;
//setup()以波特率9600初始化串口,并将trig引脚设置为输出,将echo引脚设置为输入。
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
//loop()通过发送一个10微秒的HIGH脉冲来触发传感器。此前,讲给出一个短的低电平脉冲,确保得到一个干净的高脉冲。
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(20000);
digitalWrite(trigPin, HIGH);
delayMicroseconds(40000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
/*计算公式:
距离=(传播时间/ 2)x声速
声速为:343m / s = 0.0343cm / uS = 1 / 29.1cm / uS
*/
cm = (duration/2) / 29.1;
inches = (duration/2) / 74;
//打印结果,结果显示在串口监视器
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
}
5、结果
在Arduino 1.8.4版本下,代码经过编译和上传后得到的结果如下:
五、链接
代码仓库:https://gitee.com/wcyuan/ArduinoKaiFaBanShiYongChaoShengBoChuanGanQiHC-SR04/