跳到:
ESP32教程1/55 - SunFounder ESP32物联网学习套件软件与Arduino IDE简介 ESP32教程2/55 - 什么是ESP32、摄像头扩展板、开箱SunFounder的ESP32物联网套件 ESP32 教程 3/55 - 电阻、LED、面包板项目:你好 LED -ESP32 物联网学习套件 ESP32 教程 4/55 - 数据类型 定义变量 Int、bool、char、串口监视器 - ESP32 物联网套件 ESP32教程5/55 - LED调光,控制LED亮度 - ESP32物联网学习套件 ESP32 教程 6/55 - 使用 RGB LED 项目 2.3 - SunFounder 的 ESP32 物联网学习套件 ESP32教程7/55-在ESP32 Arduino编程中使用数组-SunFounder的ESP32物联网学习套件 ESP32 Tutorial 8/55 -Walking Light 74HC595 Shift register -SunFounder's ESP32 IoT Learning kit ESP32 教程 9/55 - 使用按钮切换LED,按下开,按下关 - SunFounder ESP32 物联网套件 ESP32教程10/55 - 使用七段数码管74HC595的数字计数器 - ESP32物联网学习套件 ESP32教程11/55 - 使用LCD1602 LCD2004与ESP32 - SunFounder的ESP32物联网学习套件 ESP32 教程 12/55 - 使用 SunFounder 的 ESP32 IoT 学习套件进行 WS2812 RGB 灯带 4 项目 ESP32教程13/55 - 使用有源蜂鸣器让Arduino发出蜂鸣声 | SunFounder的ESP32物联网学习套件 ESP32 教程 14/55 - 使用 SunFounder ESP32 IoT 学习套件播放自定义音乐音符 ESP32教程15/55 - 使用ESP32 L293D控制直流电机速度 | SunFounder的ESP32物联网学习套件 ESP32教程16/55 - 使用ESP32和L293D的迷你水泵 | SunFounder的ESP32物联网学习套件 ESP32 教程 17/55 - 使用 ESP32 和电位器控制舵机 - ESP32 物联网学习套件 ESP32教程18/55 - 使用ESP32检测倾斜 | SunFounder的ESP32物联网学习套件 ESP32 教程 19/55 - 使用红外传感器检测障碍物 | SunFounder 的 ESP32 物联网学习套件 ESP32 教程 20/55 - 循迹模块 | SunFounder 的 ESP32 物联网学习套件 ESP32教程21/55 - 使用PIR运动传感器检测人体 | SunFounder的ESP32物联网学习套件 ESP32教程22/55 - 使用LED Arduino感受光线 | SunFounder的ESP32物联网学习套件 ESP32 教程 23/55 - 使用ESP32读取电位器电压 | SunFounder的ESP32物联网套件 ESP32 教程 24/55 - 测量土壤湿度用于灌溉 | SunFounder 的 ESP32 IoT 学习套件 ESP32教程25/55 - 使用NTC和LCD测量温度 | SunFounder的ESP32物联网学习套件 ESP32教程26/55 - 使用操纵杆与Arduino采取行动 | SunFounder的ESP32物联网套件 ESP32 教程 27/55 - 使用超声波传感器测量距离 | SunFounder 的 ESP32 物联网学习套件 ESP32教程28/55 - DHT11温度传感器与LCD | SunFounder的ESP32物联网学习套件 ESP32 教程 29/55 - 使用ESP32读取红外遥控按键| SunFounder的ESP32物联网学习套件 ESP32教程30/55——使用Adafruit IO服务通过MQTT在网页上控制舵机 | SunFounder的ESP32物联网学习套件 ESP32教程31/55 - 带避障功能的LED灯带项目 | SunFounder的ESP32物联网学习套件 ESP32教程32/55 - 带LCD和蜂鸣器的汽车倒车距离警告 | SunFounder物联网学习套件 ESP32 教程 33/55 - 使用 SunFounder 的 ESP32 物联网学习套件制作数字骰子 ESP32 教程 34/55 - 使用RGB LED和旋钮实现颜色渐变 | SunFounder的ESP32物联网学习套件 ESP32教程35/55 - 植物监测器,土壤、温度和光照 | SunFounder的ESP32物联网学习套件 ESP32教程36/55 - 猜数字游戏 | SunFounder的ESP32物联网学习套件 ESP32教程37/55 - 使用蓝牙应用与ESP32 BLE | SunFounder的ESP32物联网学习套件 ESP32 教程 38/55 - 通过手机控制RGB LED | SunFounder的ESP32物联网学习套件 ESP32教程39/55 - 将ESP32用作蓝牙音乐播放器 | SunFounder的ESP32物联网学习套件 ESP32教程40/55 - 读写Micro SD卡 | SunFounder的ESP32物联网学习套件 ESP32教程41/55 - 使用Micro SD卡的MP3播放器 | SunFounder的ESP32物联网学习套件 ESP32教程42/55 - 使用相机拍照并保存到Micro SD卡 CAM-1 | SunFounder的ESP32套件 ESP32教程43/55 - 物联网互联网气象站 | SunFounder的ESP32物联网学习套件 ESP32教程44/55 - ESP32摄像头WiFi视频流网页服务器 CAM-2 | SunFounder的ESP32套件 ESP32教程45/55 - 带LED控制的定制流媒体服务器 CAM-3 l SunFounder的ESP32学习套件 ESP32教程46/55 - 使用HiveMQ MQTT进行远程温度监控 | SunFounder的ESP32套件 ESP32教程47/55 - 使用MQTT通过互联网实现WS2812 CheerLights | SunFounder的ESP32物联网套件 ESP32教程48/55 - 远程温度监控与LED控制MQTT | SunFounder的ESP32物联网套件 ESP32教程49/55 - 通过Adafruit IoT在互联网上控制直流电机 | SunFounder的ESP32套件 ESP32教程50/55 - 从世界任何地方控制RGB LED | SunFounder的ESP32套件 ESP32 Tutorial 51/55 - Temperature and Humidity over WiFi with DHT | SunFounder's ESP32 IoT Learning Kit ESP32教程52/55 - WS2812 CheerLights MQTT全局同步与LCD | SunFounder ESP32物联网套件 ESP32教程53/55 - 构建LCD网络时钟 | SunFounder的ESP32物联网学习套件 ESP32教程54/55 - 通过WiFi设置WS2812 LED灯带颜色 | SunFounder的ESP32物联网学习套件 ESP32教程55/55 - 如何测量12V、24V或100V直流电压 | 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_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);
}