【史上最全面esp32教程】激超声波模块测距篇

简介: 【史上最全面esp32教程】激超声波模块测距篇

前言

超声波测距常用于小车避障,当测距值为几时,他就会自动的转向,从而实现避障功能。


超声波测距的原理

  1. esp32 控制超声波测距发出超声波
  2. 遇到障碍物反弹超声波
  3. 计算接收超声波所用的时间
  4. 使用这个公式计算距离,单位为cm:Time* 0.034 / 2;


操作

连线说明

名称 pin脚 功能
GND GND
VCC VCC
Trig 22 发送超声波
echo 23 接收返回的超声波

使用方法

发送超声波引脚和接收超声波引脚初始化如下:

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT)

OUTPUT:发送

INPUT:接收

发出超声波:

先高后低

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

计算超声波回波的时间:

long duration = pulseIn(echoPin, HIGH);

利用公式进行计算:

long distance = duration * 0.034 / 2;

distance 就是我们的距离了。

测距代码如下:

const int trigPin = 22;
const int echoPin = 23;
void setup() {
  //设置超声波引脚为输入/输出
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(115200);
}
void loop() {
  //发出超声波脉冲
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  //计算超声波回波的时间
  long duration = pulseIn(echoPin, HIGH);
  //计算物体的距离
  long distance = duration * 0.034 / 2;
  //输出物体的距离
  Serial.println(distance);
  delay(700);
}

注意:如果不延时,会出现错误信息。

示例

当距离大于5时,灯不闪,当距离小于5时,常亮:

代码如下:

const int trigPin = 22;
const int echoPin = 23;
const int Led = 2;
void setup() {
  //设置超声波引脚为输入/输出
  pinMode(trigPin, OUTPUT);
  pinMode(Led, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(115200);
}
void loop() {
  //发出超声波脉冲
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  //计算超声波回波的时间
  long duration = pulseIn(echoPin, HIGH);
  //计算物体的距离
  long distance = duration * 0.034 / 2;
  if(distance >= 10)
  {
    digitalWrite(Led,LOW);
  }
  else if(distance < 10)
  {
    digitalWrite(Led,HIGH);
  }
  //输出物体的距离
  Serial.println(distance);
  delay(700);
}

总结

通过使用ESP32来控制超声波模块,我们可以实现测量物体距离的功能,从而可以用于安全报警系统、自动门等应用。

相关文章
|
IDE 物联网 开发工具
【史上最全面esp32教程】点灯大师篇
【史上最全面esp32教程】点灯大师篇
881 0
|
传感器 Linux Python
一起玩转树莓派(19)——红外遥控控制实验
红外遥控是生活中非常常见的电子器具,电视机,空调,音响等电器都可以通过遥控器进行控制。本篇博客,我们尝试来通过红外发生器和红外信号接受器来进行红外控制实验,在树莓派上通过红外遥控的按键来处理LED灯的控制。
2000 0
|
6月前
|
传感器 编解码 算法
2021-07-20LabVIEW编程LabVIEW开发 控制Dantec 激光多普勒测试仪LDV例程与相关资料
2021-07-20LabVIEW编程LabVIEW开发 控制Dantec 激光多普勒测试仪LDV例程与相关资料
38 0
|
传感器 移动开发 C语言
TKM32F499评估板串口通信学习与实践笔记
TKM32F499评估板串口通信学习与实践笔记
215 0
|
API 数据处理
2022年十月份电赛OpenMV巡线方案(2)---主控代码详细分析
2022年十月份电赛OpenMV巡线方案(2)---主控代码详细分析
171 0
|
IDE 开发工具 C语言
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
835 0
【史上最全面esp32教程】oled显示篇
【史上最全面esp32教程】oled显示篇
1315 0
|
传感器 数据采集 机器人
LabVIEW控制Arduino实现红外测距(进阶篇—6)
红外测距是一种非直接接触的测量方式,由于其结构简单、抗干扰性强、成本低等优点,在测量测绘上得到广泛的运用。
【史上最全面esp32教程】激光与食人鱼模块篇
【史上最全面esp32教程】激光与食人鱼模块篇
219 0
|
芯片
单片机:步进电机(内含:1 步进电机简介+2 步进电机工作原理+ 3 步进电机技术指标 +4. 软件设计+5.原始代码+6.实验现象)
单片机:步进电机(内含:1 步进电机简介+2 步进电机工作原理+ 3 步进电机技术指标 +4. 软件设计+5.原始代码+6.实验现象)
427 0
单片机:步进电机(内含:1 步进电机简介+2 步进电机工作原理+ 3 步进电机技术指标 +4. 软件设计+5.原始代码+6.实验现象)