搜索代码

ESP32 教程 6/55 - 使用 RGB LED 项目 2.3 - SunFounder 的 ESP32 物联网学习套件

ESP32 教程 6/55 - 使用 RGB LED 项目 2.3 - SunFounder 的 ESP32 物联网学习套件

在本教程中,我们将学习如何使用ESP32微控制器控制RGB LED。本项目将帮助您了解如何连接RGB LED,并使用PWM(脉冲宽度调制)信号控制其颜色。通过本教程的学习,您将能够通过调整每个LED组件的强度来创建任意颜色组合。这是创建视觉吸引力项目的基础技能。

为了更好地理解RGB LED及其颜色混合能力,我们将探讨接线以及使用ESP32控制它所需的代码。如果您需要视觉辅助,请务必查看视频(视频中03:20处),以获得关于接线和代码设置的更清晰说明。

硬件说明

本项目的主要组件包括ESP32模块、RGB LED和电阻。ESP32是一款功能强大的微控制器,内置Wi-Fi和蓝牙,非常适合物联网应用。RGB LED由三个独立的LED(红色、绿色和蓝色)封装在一个单元中,根据三种颜色的组合可以产生多种颜色。

在我们的设置中,RGB LED将采用共阳极配置接线,即阳极引脚连接到正电压,每种颜色的阴极引脚独立控制。这样,我们可以通过ESP32发送PWM信号来调整每种颜色的亮度。

数据手册详情

制造商SunFounder
零件编号RGB-LED-4PIN
公共类型共阳极
正向电压(每个LED)2.0 V(红色),3.2 V(绿色),3.2 V(蓝色)
最大电流(每个LED)20 mA
工作温度-25至85 °C
封装4引脚直插式

  • 每种颜色使用一个220 Ω电阻来限制电流并防止损坏。
  • 确保公共引脚连接到适当的电压(对于ESP32为3.3 V)。
  • 连接RGB LED时仔细检查极性,以避免反向损坏。
  • 使用PWM控制亮度级别,建议频率约为5000 Hz。
  • 在接线整个设置之前,先单独测试每种颜色。

接线说明

要将RGB LED连接到ESP32,首先识别RGB LED上的引脚。最长的引脚是共阳极,它将连接到ESP32上的3.3 V电源。其他三个引脚分别用于红色、绿色和蓝色。在我们的设置中,将红色引脚连接到GPIO 27,绿色引脚连接到GPIO 26,蓝色引脚连接到GPIO 25。每个引脚还将连接一个220 Ω电阻。

首先将RGB LED放在面包板上,确保共阳极引脚在左侧。将红色引脚插入面包板,并连接到电阻的一端,电阻的另一端连接到GPIO 27。对绿色和蓝色引脚重复此操作,将绿色引脚连接到GPIO 26,蓝色引脚连接到GPIO 25。最后,将公共引脚连接到ESP32上的3.3 V引脚以完成电路。确保将ESP32的地线也连接到面包板。

ESP32_RGB_LED_wiring_lesson_06

代码示例与讲解

在代码中,我们首先使用常量定义RGB LED引脚。例如,const int redPin = 27;定义了红色LED的GPIO引脚。我们还使用const int freq = 5000;const int resolution = 8;设置PWM频率和分辨率。这为控制每个LED颜色的亮度设置了必要的参数。

const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

接下来,我们在setup()函数中为每种颜色配置PWM通道。ledcAttach()函数将每个引脚链接到相应的PWM通道。此设置确保我们可以独立控制每种颜色的亮度。

void setup() {
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

loop()函数中,我们使用setColor()函数更改LED颜色。传递给此函数的值表示红色、绿色和蓝色的强度。例如,调用setColor(255, 0, 0);将LED设置为红色。每次颜色更改后,我们使用delay(1000);等待一秒钟,然后再切换到下一种颜色。

void loop() {
  setColor(255, 0, 0); // 红色
  delay(1000);
  setColor(0, 255, 0); // 绿色
  delay(1000);
}

演示/预期效果

完成接线并将代码上传到ESP32后,您应该看到RGB LED循环显示各种颜色:红色、绿色、蓝色、黄色、紫色和青色。如果LED未正确点亮,请仔细检查接线,并确保共阳极连接到3.3 V。此外,如果您注意到任何意外的颜色,请验证LED引脚上的电阻连接。

如视频中所示(视频中10:45处),调整setColor()函数中的值可以创建不同的颜色。尝试各种组合,观察RGB LED的响应。

视频时间戳

  • 00:00 - RGB LED 简介
  • 03:20 - 接线说明
  • 10:45 - 代码讲解
  • 12:30 - 颜色混合演示

图像

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
ESP32_RGB_LED_wiring_lesson_06
ESP32_RGB_LED_wiring_lesson_06
806-ESP32 Tutorial 6/55 - Arduino code to control RGB LED with ESP32
语言: C++
/*
 * // 定义RGB LED引脚
 */
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

 // 定义PWM频率和分辨率
const int freq = 5000;
const int resolution = 8;

void setup() {
 // 设置PWM引脚
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

void loop() {
  setColor(255, 0, 0); // 红色
  delay(1000);
  setColor(0, 255, 0); // 绿色
  delay(1000);
  setColor(0, 0, 255); // 蓝色
  delay(1000);
  setColor(255, 255, 0); // 黄色
  delay(1000);
  setColor(80, 0, 80); // 紫色
  delay(1000);
  setColor(0, 255, 255); // 青色
  delay(1000);
}

void setColor(int red, int green, int blue) {
  ledcWrite(redPin, red);
  ledcWrite(greenPin, green);
  ledcWrite(bluePin, blue);
}

资源与参考

文件📁

没有可用的文件。