(1)实验平台:
普中ESP32S3开发板https://item.taobao.com/item.htm?id=803002165011(2)资料下载:普中科技-各型号产品资料下载链接
不论学习什么单片机,最简单的外设莫过于 IO 口的高低电平控制LED,本章将向大家介绍如何使用 Arduino 控制 ESP32 的 GPIO 输出。通过本章的学习,让大家对 Arduino 的程序架构有一定的认识,为以后大型项目程序学习打下基础,增强信心。本章分为如下几部分内容:
4.1 实验介绍
4.1.1 实验简介
相信大部分人开始学习嵌入式单片机编程时都会从点亮LED 开始,我们在学习 ESP32 使用 Arduino 的编程也不例外,通过点亮第一个LED 能让你对编译环境和程序架构有一定的认识,为以后的学习和更大型的程序打下基础,增加信心。
4.1.2 实验目的
点亮 LED 模块中的一个 LED 灯,即让 GPIO 输出高或低电平,对ESP32 来说,高电平约 3.3V,低电平约 0V。
4.1.3 Arduino 函数使用
4.1.3.1 pinMode()函数
ESP32 上每一个带有数字编号的引脚几乎都具备输入/输出数字信号的功能。在使用输入或输出功能前,需要先通过 pinMode()函数配置引脚的模式为输入模式或输出模式,函数原型如下:
void pinMode(uint8_t pin, uint8_t mode)
其中参数 pin 为指定配置的引脚标号,参数 mode 为指定的配置模式,可使用的模式种类如下:
PULLUP 模式适用于不确定的信号输入,而 INPUT_PULLUP 模式适用于读取传感器信号或开关信号。PULLDOWN 和 INPUT_PULLDOWN 与前面关系类似。
使用方法如:
pinMode(3, OUTPUT);
4.1.3.2 digitalWrite()函数
配置为输出模式以后,还需要使用 digitalWrite()函数使用该引脚输出高电平或低电平。函数原型如下:
void digitalWrite(uint8_t pin, uint8_t val)
其中参数 pin 为指定输出的引脚编号。参数 value 为要指定的输出电平,使用 HIGH 指定输出高电平,使用 LOW 指定输出低电平。Arduino ESP32 中输出的低电平为 0V,输出的高电平为当前工作电压 3.3V。电压大于2.5V 的认为是高电平,电压小于 0.5V 的认为是低电平。所以输入或输出电压不一定会到标准的工作电压。
在 Arduino ESP32 核心库中,HIGHT 被定义为 1,LOW 被定义为0,因此也可以直接使用数字 0 和 1 表示输出低电平和高电平。
使用方法如:
digitalWrite(3, HIGH);
digitalWrite(3, 1);
4.1.3.3 delay()函数
delay()为毫秒延时函数,函数原型为:
void delay(uint32_t)
将要延时的时间传递函数参数内即可。比如延时 1S,
delay(1000);
4.2 硬件设计
本实验使用到硬件资源如下:
(1)LED 模块中 D1 指示灯
(2)ESP32 GPIO
LED 模块电路如下所示:
从网络标号可知,LED 与 ESP32 的 GPIO3 管脚连接,当该引脚输出高电平时,LED 点亮,输出低电平时,LED 熄灭。
4.3 软件设计
4.3.1 点亮第一个 LED 实验
下面我们打开“\4--实验程序\1--Arduino 实验\1--基础实验\1-点亮第一个LED 实验”程序,控制代码在 main.ino 中,代码如下:
/* 深圳市普中科技有限公司(PRECHIN 普中)
在线视频:https://space.bilibili.com/2146492485/video
技术支持:www.prechin.net
*
* 实验名称:点亮第一个LED实验
*
* 接线说明:LED模块-->ESP32 IO
* D1-->3
*
* 实验现象:程序下载成功后,D1指示灯点亮
*
* 注意事项:
*
*/
//定义LED1管脚
#define LED1 3
void setup() {
//设置LED1引脚为输出模式
pinMode(LED1, OUTPUT);
//LED1引脚输出高电平,点亮
digitalWrite(LED1, HIGH);
}
void loop() {
}
代码比较简单,设置管脚模式为输出,使管脚输出高电平点亮。程序中使用宏定义的方式定义 LED 管脚,如下:
#define LED1 3
这种写法可以提高程序的可读性,并且便于修改,若设备需要更换连接引脚,直接修改该宏定义值即可。
4.3.2 LED 闪烁实验
下面我们打开“\4--实验程序\1--Arduino 实验\1--基础实验\2-LED 闪烁实验”程序,控制代码在 main.ino 中,代码如下:
/* 深圳市普中科技有限公司(PRECHIN 普中)
* 在线视频:https://space.bilibili.com/2146492485/video
技术支持:www.prechin.net
* 实验名称:LED闪烁实验
*
* 接线说明:LED模块-->ESP32 IO
* D1-->3
*
* 实验现象:程序下载成功后,D1指示灯闪烁
*
* 注意事项:
*
*/
//定义LED1管脚
#define LED1 3
void setup() {
//设置LED1引脚为输出模式
pinMode(LED1, OUTPUT);
//LED1引脚输出高电平,点亮
digitalWrite(LED1, HIGH);
}
void loop() {
digitalWrite(LED1, HIGH);//LED1引脚输出高电平,点亮
delay(200);//延时200ms
digitalWrite(LED1, LOW);//LED1引脚输出低电平,熄灭
delay(200);//延时200ms
}
代码比较简单,首先初始化管脚模式,然后在循环体内不断让管脚输出高和低电平,在电平之间间隔一段时间。
4.4 实验现象
4.4.1 点亮第一个 LED 实验
将程序下载到开发板内(可参考“2.2.3 程序下载运行”章节),可以看到LED 模块中 D1 指示灯点亮。
4.4.2 LED 闪烁实验
将程序下载到开发板内,可以看到 LED 模块中 D1 指示灯闪烁。