Arduino+ESP32-WROOM-32UE(一)

刚刚接触Arduino平台和ESP32,借用博客的形式做一个简单的学习记录。在这里,我将记录自己的学习过程以及遇到的一些问题,并把容易踩的坑总结出来。话不多说,开始吧。

1.点亮ESP32上的LED灯

理论上购买的各种开发板上都会有内置的LED灯以及对应的管脚。所以想要点亮一个LED,需要查询相应的手册,找到对应的引脚,即可点亮LED。这里放一个网址,可以下载自己所需的ESP32手册:

https://docs.espressif.com/projects/arduino-esp32/en/latest/getting_started.html#examples

 我用的ESP32 WROOM 32UE对应的是ESP32-D0WD-V3芯片,下载第一个手册即可。

手册里找了半天没找到,所以:

现在就可以开始点灯了。

(1)在Arduino中打开示例Blink:

(2)打开后,看里面的内容

第一部分是对于这个示例的简单介绍。

功能:点亮LED,亮一秒,暗一秒。

对应管脚:大部分UNO板子是13脚,在MKR1000上是6脚。我们使用的不同于二者,所以需要对其进行更改。

第二部分就是代码了。

对代码做了简单学习。

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

setup(),loop()函数都是Arduino内部已经封装好的函数。

setup()函数用于对程序做一些必要的设置,是程序中第一个被执行的。现在它里面只有一个语句:

pinMode(LED_BUILTIN, OUTPUT);

容易理解,这个语句是对某个引脚的模式做了设置,为输出模式。pinMode()函数也是Arduino中的函数。

loop()函数中有两部分构成,一部分是对引脚的拉高/拉低,另一部分是延时。

  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second

digitalWrite()函数用于对某个引脚的状态进行赋值,在本例中体现为灯的亮与灭

 延时函数是Arduino为我们写好的,利用delay()即可实现,其单位为1ms。

(3)对内容进行修改实现功能

我们只需对引脚做一个简单的修改即可,将原来的13脚改为2脚。故搜索资料后,对管脚2操作如下:

const int LED_BUILTIN = 2;

const关键字代表常量。它修改了变量的行为,使得该变量可以像其类型的任何其他变量一样使用。也就是说,LED_BUILTIN就是管脚2。

(4)验证上传

 成功。

如果要修改灯的闪烁,就修改延时时间就可以了。

接下来我在DFROBOT网站上学习,第二个简单项目是利用LED输出SOS。实际上就是利用不同的闪烁时间分别代表S、O两个字母,配合循环完成。具体代码如下:

const int LED = 2;
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED, OUTPUT);
}

// the loop function runs over and over again forever
void loop() 
{
  for(int x=0;x<3;x++)
  {
  digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(150);                     
  digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
  delay(100);                      
  }

delay(100);//The interval between two letters



  for(int x=0;x<3;x++)
  {
  digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(400);                      
  digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
  delay(100);                       
  }
delay(100);//The interval between two letters
  for(int x=0;x<3;x++)
  {
  digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(150);                      
  digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
  delay(100);                       
  }
delay(5000);//The interval between two signals
  
}

最重要的是for语句的应用,注意点:

  • 对for中变量类型的声明
  • 中间用;间隔
  • 所有for循环写在一个loop()中

2.ESP32中的按键使用

学完点灯,自然要学按键。

本实验功能:通过按键控制灯的亮灭,按下时等亮,松开时灭。

这个逻辑很简单,只需要对按键引脚做出判断即可。通过查询:ESP32板上对应按键的引脚是GPIO0。由于被上拉,所以当按下按键时,0口为逻辑0;松开按键时,0口为逻辑1。

故编程如下:

const int LED = 2;
const int KEY_0 = 0;
void setup() 
{
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED, OUTPUT);
  pinMode(KEY_0,INPUT_PULLUP);
}
void loop() 
{
  if (digitalRead(KEY_0)==0)//Determine if the key is pressed
  {
    digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(150);  
  }                   
  else
  {
    digitalWrite(LED, LOW);   // turn the LED on (HIGH is the voltage level)
    delay(150);  
  } 
}

对上述代码作说明:

  • 按键对应GPIO0,所以对其进行了定义
  • 将0口设置为输入上拉模式
  pinMode(KEY_0,INPUT_PULLUP);

这也就是为什么按键未按下时是逻辑1,按下时是0。

  • 利用digitalRead()函数对0口的状态进行读取,用if……else逻辑进行判断

  •  这里在每一个读取后加了一个小延时,做一个简单消抖

最终,结果如下:

  按下按键前

 按下按键后


第一次记录到此结束。下一次计划更新利用ESP32实现AD采集。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您好!ESP32-WROOM-32是一款基于ESP32芯片的Wi-Fi和蓝牙模块,可以使用Arduino开发环境进行编程。 要使用ESP32-WROOM-32进行Arduino编程,您需要先安装ESP32的开发环境。具体步骤如下: 1. 下载并安装Arduino IDE,可从官网https://www.arduino.cc/en/software下载最新版本。 2. 打开Arduino IDE,依次选择“文件”->“首选项”,在“附加开发板管理器网址”一栏中输入以下网址: https://dl.espressif.com/dl/package_esp32_index.json 3. 关闭“首选项”窗口,再依次选择“工具”->“开发板”->“开发板管理器”。 4. 在开发板管理器中搜索“esp32”,找到“esp32 by Espressif Systems”并安装。 5. 在开发板管理器中找到已安装的ESP32开发板,并选择您使用的具体ESP32模块。 6. 连接ESP32模块到计算机,并选择正确的端口和波特率。 7. 编写您的Arduino程序,并上传到ESP32模块中。 希望以上步骤能够帮助您开始使用ESP32-WROOM-32进行Arduino编程。如果您有任何问题,请随时向我提问。 ### 回答2: ESP32-WROOM-32是一款高性能、低功耗、易于开发的Wi-Fi+蓝牙双模模块,它是由Espressif Systems推出的一款旗舰级的芯片。ESP32内置双核32位Tensilica LX6微处理器,以及丰富的外设和接口,包括Wi-Fi、蓝牙、UART、SPI、I2C、PWM、ADC等。ESP32-WROOM-32的高度集成和出色的性能,使得其在物联网、工业自动化、智能家居、智能穿戴等领域有广泛的应用前景。 Arduino是一款开源的电子原型平台,它简化了硬件与软件的开发过程,使得任何人都能够快速、轻松地制作出交互式的电子作品。经过多年的发展,Arduino已经成为了全球开发者、制造商和创客的首选开发平台之一,其强大的生态系统和丰富的资源库,为开发者提供了丰富的工具和资源,促进了独立发明和创新。 ESP32-WROOM-32与Arduino的结合,充分发挥了两者各自的优势。Arduino提供了简单易用的编程语言和开发环境,可以实现快速的原型制作和测试,而ESP32-WROOM-32则提供了强大的硬件支持和丰富的通信接口,实现了快速、稳定、低功耗的无线通信。ESP32-WROOM-32与Arduino可以相互补充,让开发者可以轻松地实现功能强大的智能硬件系统,例如物联网设备、智能家居控制器、机器人等等。 总之,ESP32-WROOM-32和Arduino的组合拥有极高的开发灵活性和创新性,可以满足各种不同领域的需求,是一个理想的硬件开发解决方案。 ### 回答3: ESP32-WROOM-32是一款高度集成的WiFi和蓝牙低功耗模组。它支持Arduino和MicroPython编程语言,因此它被广泛用于物联网应用中。Arduino是一种硬件和软件平台,旨在为开发人员提供一个友好的编程环境。ESP32-WROOM-32集成了大量功能,包括双核Tensilica LX6处理器、240 MHz时钟频率、支持802.11 b/g/n/e/i标准的WiFi、蓝牙4.2和BLE。 其中一个最大的优点是该模块有32 GPIO(通用输入/输出引脚),同时提供3种不同的电源输出(DC 5V、DC 3.3V和microUSB)以及一些其他的特有功能,如SPI、I2C、UART等接口。 使用Arduino编程的好处是其易于使用且广泛的社区支持。此外,Arduino提供了丰富的库和示例代码,可以帮助您快速上手。 ESP32-WROOM-32主要用于嵌入式应用,如智能家居、工业自动化、远程监控、机器人技术、传感器等等。通过与其他硬件和软件结合使用,可以创造出许多有趣的项目和应用程序。该模块也非常适合初学者使用,因为它易于使用并且有许多可用的教程和文档。 总而言之,ESP32-WROOM-32与Arduino结合使用,可以让您开发出更复杂的物联网应用程序,并能够利用丰富的Arduino社区资源。其高度集成的特点以及多种电源输出和接口的支持,也使得该模块成为一个非常强大且适用于各种应用场景的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值