ESP32开发板点灯和按键控制
- LED电路分析
- LED程序编写
- 点亮LED
- LED闪烁
- 按键控制LED亮灭
- 总结
点击图片购买
LED电路分析
(看完文章如果需要代码或者原理图等文件可在下方留言邮箱)
本期在我们点亮和熄灭板子上的LED之前还是需要分析LED在板子上的电路以便我们控制
我们放大看到LED部分的电路
LED一端通过限流电阻接到ESP32模组的GPIO2上面,另一端接地,那么我们GPIO2端口输出高电平正负两端有电压差那么灯就会亮,输出低电平两端都是0V那么灯灭
LED程序编写
有接触过arduino编程的可能会对界面比较熟悉,没有的话也可以参考arduino社区中的GPIO控制的函数功能,查看函数
点亮LED
控制LED灯也可以说是我们控制GPIO口状态的过程,在控制GPIO口电平变化的过程中我们需要用到以下几个函数
pinMode(pin, mode)
函数功能:设置GPIO端口的状态
参数pin
指定需要设置的GPIO端口
参数mode
指定GPIO端口的模式,有以下三个参数可选INPUT
:输入模式OUTPUT
:输出模式INPUT_PULLUP
:输入上拉模式
digitalWrite(pin, value)
函数功能:可以使用这个函数让GPIO口输出高电平或者低电平
参数pin
指定需要设置电平的GPIO端口
参数value
指定端口输出的电平状态,有以下两个参数可选HIGH
:高电平LOW
:低电平
接下来我们打开arduino IDE开始编写我们的第一个程序,点击下图中朝下的箭头保存程序,我把他保存到资料中的程序文件夹下面
默认的工程下面有两个建立工程就有的函数 void setup()
和 void loop()
void setup()
为程序初始化函数,在上电启动的时候会执行一次,执行完一次之后程序将会进入到loop()
函数不再执行setup()
,直到程序再次重新启动
void loop()
为循环执行的函数,在程序执行完setup()
初始化函数之后执行,loop()
中的程序代码执行完一次之后将会从loop()
中最开始的代码重新执行,也就是说我们这个函数中的代码会一直循环的执行下去
我们的灯只要执行一次GPIO2的状态就行,程序比较简单我们参考下方的程序编写思路
最终代码如下
void setup() {
// put your setup code here, to run once:
pinMode(2,OUTPUT); //配置GPIO2端口模式为输出模式
digitalWrite(2,HIGH); //配置GPIO2端口为高电平,灯亮
}
void loop() {
// put your main code here, to run repeatedly:
}
接下来我们选择对应开发板和对应的端口点击上方向右的箭头烧录,与前文的烧录一样
烧录完之后可以看到板子上的蓝灯会亮起来
LED闪烁
我们点亮LED之后进一步实现LED闪烁的程序,闪烁的程序中包含点亮和熄灭的代码,我们这里有另外一个函数来控制LED闪烁的速度,同样可以在arduino社区中找到参考函数
delay( ms)
函数功能:延时
参数ms
为时长,单位毫秒,数据类型unsigned long
我们写一个一秒钟灯闪烁一次的程序,通过delay()
函数来控制闪烁的时间,程序我们参考下方的思路编写
接下来新建工程、保存、程序编辑、代码下载与我们点亮LED那一部分相同,我们保存程序到资料里面工程名为LED_twinkle
代码如下:
void setup() {
// put your setup code here, to run once:
pinMode(2,OUTPUT); //将GPIO2配置为输出模式
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(2,HIGH); //GPIO2输出高电平 灯亮
delay(500); //保持GPIO2高电平500毫秒,即灯亮500ms
digitalWrite(2,LOW); //GPIO2输出低电平 灯灭
delay(500); //保持GPIO低电平500毫秒,即灯灭500ms
}
烧完程序之后可以看到板子蓝灯在闪烁
按键控制LED亮灭
我们接下来通过按键控制LED灯,按键按下灯亮,松开灯灭
和控制LED灯一样,在使用板子按键之前我们先看原理图中按键的部分
可以看到原理图中的按键时接地的,上拉了电阻到VCC
之后接到了GPIO0
端口,当我们按键未按下的时候GPIO0
端口上拉电阻到3.3V
,端口电平为高电平,按下按键之后通过按键把GPIO0
下拉到GND
,端口电平为低电平,我们只需要检测GPIO0
的端口电平状态即可判断按键是否按下
关于GPIO0
端口的模式配置我们配置成输入上拉确保端口电平能够被拉低
既然是检测端口的电平输入状态,我们需要用到一个检测函数
digitalRead(pin)
函数功能:读取引脚状态,并对返回状态值,返回1为高电平,0为低电平
参数pin
为需要检测状态的端口
接着按照下方的思维编写程序
新建工程、保存、程序编辑,我们保存程序到资料里面工程名为key_LED
代码如下
void setup() {
// put your setup code here, to run once:
pinMode(2,OUTPUT); //配置LED所在端口为输出模式
pinMode(0,INPUT_PULLUP); //配置按键所在端口为上拉输入模式
}
void loop() {
// put your main code here, to run repeatedly:
if(!digitalRead(0)) //如果按键按下,即GPIO0的端口状态为低电平
{
digitalWrite(2,HIGH); //灯亮
}
else
{
digitalWrite(2,LOW); //灯灭
}
}
总结
本期通过一个控制LED灯的程序学会怎么控制ESP32上的GPIO端口的输出电平,并通过一个按键程序学会如何读取GPIO端口的输入状态,简单学会ESP32对GPIO端口电平控制,其他的关于串口、时间控制等函数均可以在arduino社区的函数参考中找到相关的说明,下一期文章我们将一起学习ESP32的wifi以及热点功能的开启关闭与连接,下面是arduino中的函数参考界面
需要资料、程序文件可私聊或在下方留言邮箱