Arduino-HC-SR04超声波测距仪
一:学习目标:
1:了解HC-SR04超声波测距仪的原理。
2:用Arduino UNO来控制获取距离并控制LED的亮灭。
二:先来介绍HC-SR04超声波模块:

1、模块性能稳定,测度距离精确:
能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度,盲区(2cm)超近。
2、主要技术参数:
1)使用电压:DC5V
2)静态电流:小于2mA
3)电平输出:高5V
4)电平输出:底0V
5)感应角度:不大于15度
6)探测距离:2cm-450cm
7)高精度:可达0.3cm
3.接线方式:如下图接线比较简单。
VCC(5V电源+)——Arduino UNO 5V引脚
trig(控制端)——Arduino UNO PIN5
echo(接收端)——Arduino UNO PIN4
GND(5V电源-)——Arduino UNO GND引脚

Arduino接线端

HC-SR04接线端
4.使用方法:
一个控制口(Arduino PIN5)发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了~~
5.模块工作原理:
(1)采用IO触发测距,给至少10us的高电平信号。
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回。
(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2。
6.Arduino代码
int inputPin=4; // 定义超声波信号接收接口
int outputPin=5; // 定义超声波信号发出接口
int ledpin=13;
void setup()
{
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
pinMode(inputPin, INPUT);
pinMode(outputPin, OUTPUT);
}
void loop()
{
digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μs
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平
int distance = pulseIn(inputPin, HIGH); // 读出脉冲时间
distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)
Serial.println(distance); //输出距离值
delay(50);
if (distance >=50)
{//如果距离大于50厘米小灯亮起
digitalWrite(ledpin,HIGH);
}//如果距离小于50厘米小灯熄灭
else
digitalWrite(ledpin,LOW);
}
7.串口调试助手监视运行结果
视频加载中...