问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Arduino UNO控制HC-SR04超声波传感器实现测距功能详解

创作时间:
作者:
@小白创作中心

Arduino UNO控制HC-SR04超声波传感器实现测距功能详解

引用
CSDN
1.
https://blog.csdn.net/weixin_45344328/article/details/123449535

Arduino UNO控制HC-SR04超声波传感器实现测距功能,是物联网和嵌入式系统开发中的一个经典应用。本文将详细介绍HC-SR04超声波传感器的工作原理、硬件连接和代码实现,帮助读者快速掌握这一实用技能。

超声波传感器的工作原理

超声波是一种频率高于20000Hz的声波,人耳无法听到。HC-SR04超声波传感器通过发送和接收超声波来测量距离。其工作原理基于压电效应:当有脉冲电压触发时,探头里的晶片就会振动,产生超声波。超声波在空气中传播,遇到物体后返回,被传感器的接收探头接收到,反射的超声波使压电晶片振动,产生电压信号。这些电压信号经过放大电路处理后,传输给Arduino进行计算。

硬件连接

所需材料

  • 面包板
  • Arduino UNO板(含USB连接线)
  • HC-SR04超声波传感器
  • 杜邦线(若干)

接线方式

HC-SR04超声波传感器
Arduino UNO板
GND
GND
VCC
5V
Trig
D2
Echo
D3

代码实现

#define Trig 2 //引脚Tring 连接 IO D2
#define Echo 3 //引脚Echo 连接 IO D3 
float cm; //距离变量
float temp; //存储回波

void setup() 
{
  Serial.begin(9600);
  pinMode(Trig, OUTPUT);
  pinMode(Echo, INPUT);
  pinMode(8,OUTPUT);
}

void loop() 
{
  //给Trig发送一个低高低的短时间脉冲
  digitalWrite(Trig, LOW); //给Trig发送一个低电平(初始化)
  delayMicroseconds(2);    //等待 2微妙
  digitalWrite(Trig,HIGH); //给Trig发送一个高电平
  delayMicroseconds(10);    //等待 10微妙
  digitalWrite(Trig, LOW); //给Trig发送一个低电平
  
  temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,
  //pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时
  //返回脉冲的长度
  
  //声速是:340m/1s 换算成 34000cm / 1000000μs = 34 / 1000
  //因为发送到接收,是一来一回,我们只要单程就好了,所以➗2
  //距离(厘米)  =  (回波时间 * (34 / 1000)) / 2
  //简化后的计算公式为 (回波时间 * 17)/ 1000
  
  cm = (temp * 17 )/1000; //把回波时间换算成cm

  Serial.print("Echo =");
  Serial.print(temp);//串口输出等待时间的原始数据
  Serial.print(" | | Distance = ");
  Serial.print(cm);//串口输出距离换算成cm的结果
  Serial.println("cm");
}

通过以上代码,Arduino UNO可以读取HC-SR04超声波传感器的数据,并通过串口输出距离信息。这个项目不仅可以作为测距工具,还可以应用于自动避障机器人、智能停车系统等场景。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号