三、ESP32开发板NodeMcu

您所在的位置:网站首页 arduino按一下灯亮 三、ESP32开发板NodeMcu

三、ESP32开发板NodeMcu

2023-09-18 08:47| 来源: 网络整理| 查看: 265

ESP32开发板点灯和按键控制 LED电路分析LED程序编写点亮LEDLED闪烁 按键控制LED亮灭总结

原文链接:https://www.yourcee.com/newsinfo/2925899.html

请添加图片描述

点击图片购买

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中的函数参考界面 在这里插入图片描述 需要资料、程序文件可私聊或在下方留言邮箱



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3