这里将会测试控制RGB LED,它可以发出不同颜色的光。接下来,使用RGB LED制作多色光。项目5.1随机颜色的光在这个项目中,我们将制作一个彩色的LED。我们可以控制RGB LED来切换不同的颜色。
相关知识
RGB LED集成了3个LED,可以分别发出红光、绿光和蓝光。它有4个引脚。这个
长引脚(1)是公共端口,即3个LED的正极或负极端口。RGB LED具有公共正极
端口及其符号如下所示。通过控制这3个参数,我们可以使RGB LED发出各种颜色的光,LED发出不同亮度的光。
红、绿、蓝被称为三原色。当你将这三种原色灯光组合在一起时,它具有不同的亮度,几乎可以产生各种可见光。电脑屏幕,单像素单元,手机屏幕、霓虹灯等都是在这个原理下工作的。如果我们使用三个8位PWM来控制RGB LED,理论上,我们可以创建16777216(1600万)种通过不同的组合颜色。
Arduino实验接线示意图(这里使用共阴极RGB模块)
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十二:ESP32-S3 WROOM N16R8 CAM开发板WiFi+蓝牙模块
OV2640/5640摄像头模组
{花雕动手做}项目之十三:ESP32-S3 CAM 控制LED灯随机显示不同的颜色,每500毫秒更新一次
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十二:ESP32-S3 WROOM N16R8 CAM开发板WiFi+蓝牙模块
OV2640/5640摄像头模组
{花雕动手做}项目之十三:ESP32-S3 CAM 控制LED灯随机显示不同的颜色,每500毫秒更新一次
*/
const byte ledPins[] = {38, 39, 40}; // 定义红、绿、蓝LED引脚
const byte chns[] = {0, 1, 2}; // 定义PWM通道
int red, green, blue;
void setup() {
for (int i = 0; i < 3; i++) { // 设置PWM通道,1KHz,8位
ledcAttachChannel(ledPins[i], 1000, 8, chns[i]);
}
}
void loop() {
red = random(0, 256); // 生成随机红色值
green = random(0, 256); // 生成随机绿色值
blue = random(0, 256); // 生成随机蓝色值
setColor(red, green, blue); // 设置颜色
delay(500); // 延时500毫秒
}
void setColor(byte r, byte g, byte b) {
ledcWrite(ledPins[0], r); // 共阴极LED,高电平点亮LED
ledcWrite(ledPins[1], g);
ledcWrite(ledPins[2], b);
}
代码解释
1、引脚定义:
const byte ledPins[] = {38, 39, 40}:定义红、绿、蓝LED的引脚。
const byte chns[] = {0, 1, 2}:定义PWM通道。
2、setup函数:
for (int i = 0; i < 3; i++) { ledcAttachChannel(ledPins[i], 1000, 8, chns[i]); }:设置每个LED引脚为PWM输出模式,频率为1KHz,分辨率为8位。
3、loop函数:
red = random(0, 256):生成0到255之间的随机红色值。
green = random(0, 256):生成0到255之间的随机绿色值。
blue = random(0, 256):生成0到255之间的随机蓝色值。
setColor(red, green, blue):调用setColor函数设置LED颜色。
delay(500):延时500毫秒。
4、setColor函数:
ledcWrite(ledPins[0], r):设置红色LED的PWM值(共阴极LED,高电平点亮)。
ledcWrite(ledPins[1], g):设置绿色LED的PWM值。
ledcWrite(ledPins[2], b):设置蓝色LED的PWM值。
这个代码的功能是:LED灯会随机显示不同的颜色,每500毫秒更新一次。
实验场景图
评论