回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(232)---ESP32-S3 CAM 控制LED灯随机显示不同的颜色,每500毫秒更新一次 简单

头像 驴友花雕 2024.09.27 5 0

000-.jpg
09-.jpg
46.jpg

这里将会测试控制RGB LED,它可以发出不同颜色的光。接下来,使用RGB LED制作多色光。项目5.1随机颜色的光在这个项目中,我们将制作一个彩色的LED。我们可以控制RGB LED来切换不同的颜色。

 

46.jpg

相关知识
RGB LED集成了3个LED,可以分别发出红光、绿光和蓝光。它有4个引脚。这个
长引脚(1)是公共端口,即3个LED的正极或负极端口。RGB LED具有公共正极
端口及其符号如下所示。通过控制这3个参数,我们可以使RGB LED发出各种颜色的光,LED发出不同亮度的光。

红、绿、蓝被称为三原色。当你将这三种原色灯光组合在一起时,它具有不同的亮度,几乎可以产生各种可见光。电脑屏幕,单像素单元,手机屏幕、霓虹灯等都是在这个原理下工作的。如果我们使用三个8位PWM来控制RGB LED,理论上,我们可以创建16777216(1600万)种通过不同的组合颜色。

 

47.jpg

Arduino实验接线示意图(这里使用共阴极RGB模块)

 

48.jpg

  【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毫秒更新一次。

 

实验场景图 

 

49.jpg
50.jpg
51.jpg

评论

user-avatar
icon 他的勋章
    展开更多