正点原子esp32s3控制超声波进行测距

本人是新手,刚开始接触esp32板,希望能与大家交流。

开发板使用:正点原子ATK_DNESP32S3 V1.3

超声波传感器:HC-SR04

IDE: VSCODE + PLATFORMIO

在VS Code新建工程,工程命名为:ultrasonic

主板选择对应主板,这里由于没有找到正点原子对应的主板,我自已导入了一个

Frameword选择arduino

创建好工程后,写入代码:

#include <Arduino.h>

/*
 * Arduino - Ultrasonic Sensor HC-SR04
 * Wiring:
 * - VCC  --> 5VDC
 * - TRIG --> Pin 37
 * - ECHO --> Pin 20
 * - GND  --> GND
 */

const int trigPin = 37;    // 发送
const int echoPin = 20;    // 接收

void setup() {
  Serial.begin(115200);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  digitalWrite(trigPin, LOW); // 保证初始为低电平
}

void loop() {
  // 触发超声波信号
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2); //触发前先拉低TRIG引脚2微秒,保证信号稳定
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // 读取回声持续时间
  long duration_us = pulseIn(echoPin, HIGH, 30000); // 增加超时保护

  // 计算距离(厘米),声速340m/s,往返距离
  float distance_cm = duration_us * 0.034 / 2;

  Serial.print("distance: ");
  Serial.print(distance_cm, 2);
  Serial.println(" cm");

  delay(1000);
}

代码详解:

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
  • 触发前先拉低TRIG引脚2微秒,保证信号稳定。
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  • 通过TRIG引脚发出一个10微秒的高电平脉冲,触发超声波发射。
long duration_us = pulseIn(echoPin, HIGH, 30000); 
  • 使用 pulseIn测量ECHO引脚高电平持续时间(微秒),即超声波往返所需时间。
  • 增加 pulseIn超时参数,避免死等。
float distance_cm = duration_us * 0.034 / 2;
  • 距离计算公式:distance_cm = duration_us * 0.034 / 2,其中0.034为声速(cm/μs),除以2是因为超声波往返。

编译代码:

下载:

我的 platformio.ini 上的配置:

[env:dnesp32s3]
platform = espressif32
board = dnesp32s3
framework = arduino
upload_port = COM5
monitor_port = COM5
monitor_speed=115200

Serial Monitor查看结果:

### 关于正点原子 ESP32-S3 开发板资料与教程 #### 原理图获取 针对希望了解或使用正点原子 ESP32-S3 开发板的开发者而言,可以访问特定仓库来下载该开发板的相关原理图文件。此资源不仅提供了硬件层面的设计细节,还便于深入理解设备内部结构及其工作方式[^1]。 #### 初步认知与发展特性 对于初次接触这款开发板的人来说,有专门的文章介绍了其基本特性和优势所在。文章指出,正点原子推出的这款ESP32S3开发板拥有高达240MHz的工作频率,并集成了Wi-Fi和蓝牙模块,在此基础上更进一步支持AI应用程序的研发活动[^2]。 #### 实验指导文档 为了帮助使用者快速入门并掌握如何操作这枚微控制器,存在一系列详细的实验指南。例如,在其中一个实例中提到通过配置串口参数实现每两秒钟向终端发送一次“Hello world!!!”,与此同时LED灯会按照一秒间隔闪烁的方式运行,这些具体的实践案例有助于加深学习效果[^3]。 #### FreeRTOS API 使用说明 当涉及到多任务处理机制时,则可以通过研究有关`mutex_lock`函数的具体实现——即它实际上是调用了FreeRTOS下的`xSemaphoreTake()`方法——从而更好地理解和运用实时操作系统中的同步原语概念[^4]。 综上所述,上述链接均能为想要深入了解正点原子 ESP32-S3 开发板以及围绕其展开编程工作的用户提供宝贵的参考资料和支持材料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FightingFreedom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值