【esp32教程】(一)LED实验

记录自己学esp32过程,内容仅供参考。


前言

本文主要介绍如何用esp32点亮一个LED灯并实现跑马灯效果,所用配置如下:

开发框架:VScode+PlatfornIO+Arduino

芯片型号:ESP-WROOM-32

开发板型号:ESP32 DEVKITV1


一、GPIO

GPIO,即General Purpose Input Output,是通用输入输出的简称。当设置为输入模式时可用于获取外部输入信号,设置为输出模式时可通过输出高低电平来控制外部设备。
本文用到的外部模块为LED,只需将其与esp32的GPIO连接,控制GPIO输出/读取高低电平即可。

二、相关函数

如下是乐鑫Arduino ESP32的官方文档,接下来所有用到的函数都在这里可以查到
乐鑫 Arduino ESP32 文档

  • 设置引脚模式
void pinMode(uint8_t pin, uint8_t mode)

pin:数字引脚编号,例如:2表示GPIO2
mode:数字引脚工作模式,常用模式如下:
INPUT:输入模式
OUTPUT:输出模式
INPUT_PULLDOWN:下拉输入模式
INPUT_PULLUP:上拉输入模式
返回值:无

  • 设置引脚状态(只有pinMode函数为OUTPUT模式时才可使用该函数)
void digitalWrite(uint8_t pin, uint8_t val)

pin:数字引脚编号,例如:2表示GPIO2
val:输出数字引脚的电平状态,可设为HIGH/LOW
返回值:无

  • 延时函数
void delay(uint32_t ms)

ms:延时时间,单位为ms

三、程序设计

1.点亮一个LED灯

开发板自带LED灯所连接引脚为2引脚,原理图如下:
在这里插入图片描述
只需设置引脚2输出高电平即可点亮LED,完整代码如下:

#include <Arduino.h>
// 定义LED管脚
#define LED_BLUE 2
//实现跑马灯
void setup() {
  //设置LED管脚为输出模式
  pinMode(LED_BLUE,OUTPUT);
}
void loop() {
  //设置LED管脚输出高电平
  digitalWrite(LED_BLUE,HIGH);
}

板载LED被点亮
在这里插入图片描述

2.实现跑马灯

因为板载LED有限所以在面包板外接了三个LED灯,颜色分别为绿、红、黄,对应引脚为14,12,13。跑马灯实现流程如下:
绿灯亮,延时500ms;红灯亮,延时500ms;黄灯亮,延时500ms。绿灯灭,延时500ms;红灯灭·,延时500ms;黄灯灭·,延时500ms。以此循环就实现了跑马灯的效果,下面编写两个函数实现:
函数一(加长版):

void led_running_1()
{
  //将引脚置为高电平
  digitalWrite(LED_GREEN,HIGH);
  //延时500ms
  delay(500);
  digitalWrite(LED_GREEN,HIGH);
  delay(500);
  digitalWrite(LED_GREEN,HIGH);
  delay(500);

  //将引脚置为低电平
  digitalWrite(LED_GREEN,LOW);
  delay(500);
  digitalWrite(LED_GREEN,LOW);
  delay(500);
  digitalWrite(LED_GREEN,LOW);
  delay(500);
}

该函数运用正常控制流程编写,代码较为冗余。
函数二(精简版):

void led_running_2()
{
  //定义引脚数组
  const int st[] = {15,14,13};
  for(int i = 0;i < 3;i++)
  {
    digitalWrite(st[i],HIGH);
    delay(500);
  }
  for(int i = 0;i < 3;i++)
  {
    digitalWrite(st[i],LOW);
    delay(500);
  }
}

该代码通过for循环,代替了重复定义,相比一实现了代码的简化。
全部代码如下:

#include <Arduino.h>

// 定义LED管脚
#define LED_GREEN 14
#define LED_RED 12
#define LED_YELLOW 13

//实现跑马灯
void led_running_1();
void led_running_2();

void setup() {
  //设置LED管脚为输出模式
  pinMode(LED_GREEN,OUTPUT);
  pinMode(LED_RED,OUTPUT);
  pinMode(LED_YELLOW,OUTPUT);
}

void loop() {
  led_running_1();
}

void led_running_1()
{
  //将引脚置为高电平
  digitalWrite(LED_GREEN,HIGH);
  //延时500ms
  delay(500);
  digitalWrite(LED_GREEN,HIGH);
  delay(500);
  digitalWrite(LED_GREEN,HIGH);
  delay(500);

  //将引脚置为低电平
  digitalWrite(LED_GREEN,LOW);
  delay(500);
  digitalWrite(LED_GREEN,LOW);
  delay(500);
  digitalWrite(LED_GREEN,LOW);
  delay(500);
}

void led_running_2()
{
  const int st[] = {15,14,13};
  for(int i = 0;i < 3;i++)
  {
    digitalWrite(st[i],HIGH);
    delay(500);
  }
  for(int i = 0;i < 3;i++)
  {
    digitalWrite(st[i],LOW);
    delay(500);
  }
}

下载到开发板,可以看到三个灯依次亮起,这样就实现了一个跑马灯。

跑马灯效果


总结

以上就是今天要讲的内容,本文仅仅简单介绍了如何用esp32点亮LED,之后会继续记录esp32其他方面的学习。

  • 36
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: esp32是一款功能强大的Wi-Fi和蓝牙模块,可以用来实现对LED的控制。通过与Wi-Fi网络连接,我们可以远程控制ESP32上的LED灯。 首先,我们需要连接ESP32LED灯。ESP32开发板上有多个引脚,我们可以选择其中一个GPIO引脚将其连接到LED的正极,而将LED的负极连接到ESP32的地线(GND)。接下来,我们需要在编程环境中进行相关设置。 使用ESP32的开发环境如Arduino IDE或MicroPython,我们可以通过编写程序来实现对LED的控制。首先,我们需要导入相关库文件,如WiFi库和GPIO库。然后,我们需要定义LED所连接的GPIO引脚,并设置为输出模式。 接下来,我们需要连接到Wi-Fi网络。我们可以通过编写代码配置Wi-Fi的名称和密码,在ESP32上进行连接。一旦成功连接到Wi-Fi网络,我们就可以使用ESP32的IP地址来进行通信。 现在,我们可以通过发送特定的指令来控制LED。我们可以编写代码,当接收到特定指令时,ESP32会将所连接的GPIO引脚设置为高电平或低电平,来打开或关闭LED。 此外,我们还可以扩展功能,比如通过手机上的App或Web页面来控制LED的开关。我们可以编写代码,使ESP32作为一个Web服务器,在浏览器上打开ESP32的IP地址,并通过互动界面来实现远程控制LED。 总之,ESP32是一款强大的Wi-Fi和蓝牙模块,可以用来实现对LED的远程控制。通过编写程序,我们可以将ESP32与Wi-Fi网络连接,并设置GPIO引脚来控制LED的开关。希望这些信息能对你有所帮助。 ### 回答2: ESP32是一款高度集成的微控制器,支持Wi-Fi连接。它可用于控制LED灯,实现智能家居和物联网应用。 要控制LED灯,首先需要连接ESP32LED灯。通过使用ESP32的GPIO引脚,将其连接到LED灯的正极和负极。然后,编写代码以控制ESP32上的GPIO引脚。 在ESP32中,我们可以使用Arduino IDE或其他支持ESP32开发的集成开发环境来编写代码。首先,要使用Wi-Fi功能,我们需要设置Wi-Fi连接。我们需要提供Wi-Fi的SSID和密码以连接到无线网络。 一旦ESP32连接到Wi-Fi网络,我们可以编写代码来控制LED灯。在ESP32上,我们可以使用DigitalWrite函数将GPIO引脚设置为高电平或低电平以打开或关闭LED灯。 例如,如果我们将LED灯连接到ESP32的GPIO引脚5上,我们可以使用以下代码来控制LED灯: ``` #include <WiFi.h> const char* ssid = "WiFi网络的SSID"; const char* password = "WiFi网络的密码"; const int ledPin = 5; void setup() { pinMode(ledPin, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("正在连接到WiFi..."); } Serial.println("WiFi连接成功!"); Serial.print("IP地址:"); Serial.println(WiFi.localIP()); } void loop() { digitalWrite(ledPin, HIGH); // 打开LED灯 delay(1000); // 延时1秒 digitalWrite(ledPin, LOW); // 关闭LED灯 delay(1000); // 延时1秒 } ``` 以上代码设置GPIO引脚5为输出,并将其设置为高电平或低电平来打开或关闭LED灯。在循环中,我们持续循环开关LED灯的状态,并使用1秒的延时。 通过上传这段代码到ESP32,它将连接到Wi-Fi网络并控制LED灯的开关状态。你可以使用手机或电脑通过Wi-Fi连接到ESP32,并从远程控制LED灯的状态。 这是使用ESP32和Wi-Fi控制LED灯的简单介绍。你可以根据需要进一步开发和优化代码,实现更复杂的功能,如通过手机应用程序控制LED灯的颜色和亮度。 ### 回答3: ESP32是一款功能强大的微控制器,具有内置WiFi模块,可以用于控制LED灯。 对于ESP32控制LED,首先需要将ESP32LED灯连接起来。可以通过将LED的正极连接到ESP32的数字输出引脚,如GPIO2,并将LED的负极连接到ESP32的地线GND。 在代码方面,首先需要包含"WiFi.h"和"esp_wifi.h"这两个头文件,以便使用ESP32的WiFi功能。然后,需要编写WiFi连接函数,将ESP32连接到相应的WiFi网络。连接成功后,可以使用WiFi客户端API发送请求或接收命令,以控制LED灯的开关状态。 在LED控制方面,可以使用digitalWrite函数来设置GPIO引脚的输出状态。例如,可以使用digitalWrite(GPIO2, HIGH)来点亮LED灯,使用digitalWrite(GPIO2, LOW)来关闭LED灯。 为了使程序能够实时响应外部命令,可以将控制部分放入一个循环中,并使用delay函数来设置一定的延迟时间,以便程序可以持续运行。 除了基本的开关控制外,还可以通过PWM(脉宽调制)来实现灯光亮度的调节。可以使用analogWrite函数来设置PWM输出的占空比,从而控制LED的亮度。 总的来说,ESP32是一款功能强大的微控制器,内置WiFi模块使其可以轻松控制LED灯。通过适当的代码编写和电路连接,我们可以实现对LED灯开关状态以及亮度的控制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值