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

举报
人才程序员 发表于 2023/11/30 17:59:18 2023/11/30
【摘要】 @TOC 前言超声波测距常用于小车避障,当测距值为几时,他就会自动的转向,从而实现避障功能。 超声波测距的原理esp32 控制超声波测距发出超声波遇到障碍物反弹超声波计算接收超声波所用的时间使用这个公式计算距离,单位为cm:Time* 0.034 / 2; 操作 连线说明名称pin脚功能GNDGNDVCCVCCTrig22发送超声波echo23接收返回的超声波 使用方法发送超声波引脚和接收超...

@TOC


前言

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


超声波测距的原理

  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来控制超声波模块,我们可以实现测量物体距离的功能,从而可以用于安全报警系统、自动门等应用。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。