使用RGB LED显示颜色色调


要了解RGB LED以及它与单色LED的区别,重要的是要使用ESP32或Arduino等微控制器和RGB LED制作一个电路。然后,重要的是要使用程序来管理该电路。有一些模拟器可以让物联网初学者学习这些概念,而无需使用物联网设备。

但是,要获得真实的结果,使用电路组件并制作实际电路非常重要。在本文中,通过两个不同的示例,说明了使用RGB LED的方法。在示例1中,使用面包板、ESP32、RGB LED、电阻和导线制作实际电路,并使用Arduino IDE编写的C程序控制这些组件。在示例2中,使用Wokwi模拟器、Arduino微控制器和一个带有红色、绿色和蓝色单色LED的RGB LED。

RGB LED是一种可以显示RGB颜色混合并产生色调的LED。它有4个引脚,最长的一个(第2个)是负极。第一个引脚用于红色,第三个引脚用于绿色,第四个引脚用于蓝色。

示例1:使用ESP32和RGB LED

首先,使用面包板、ESP32、一个RGB LED、3个电阻和一些公对公跳线制作电路。然后需要Arduino IDE来编写C程序,编译它,然后将其推送到ESP32进行执行。

图:RGB LED

所以,首先,按照图1所示制作电路。然后使用Arduino IDE编写C程序。

电路设计步骤和编码

步骤1 - 将ESP32微控制器连接到面包板。

步骤2 - 将面包板的负轨连接到ESP32的GND。

步骤3 - 使用一个RGB LED。将RGB LED的最长引脚直接连接到面包板的负轨,并将其他引脚连接到电阻。现在将电阻引脚连接到ESP32引脚(D21、D19、D18)。

步骤4 - 如果电脑上没有安装Arduino IDE,则下载并安装它。

步骤5 - 启动Arduino IDE。编写C程序,并使用勾号进行编译。

步骤6 - 通过按下勾号旁边的右箭头将程序上传到ESP32。检查电路上的结果。

代码

#define LED_RED 18
#define LED_GREEN 19
#define LED_BLUE 21

#define RED_channel 0
#define GREEN_channel 1
#define BLUE_channel 2

#define PulseWM_Frequency 5000 // PulseWM frequency
#define PulseWM_resolution 8 // 8 bit resolution

void setup() {
   ledcAttachPin(LED_RED, RED_channel);
   ledcAttachPin(LED_GREEN, GREEN_channel);
   ledcAttachPin(LED_BLUE, BLUE_channel);
   
   ledcSetup(RED_channel, PulseWM_Frequency, PulseWM_resolution);
   ledcSetup(GREEN_channel, PulseWM_Frequency, PulseWM_resolution);
   ledcSetup(BLUE_channel, PulseWM_Frequency, PulseWM_resolution);
}

void loop() {
   RGB_Color(255, 5, 5); //Showing the shade of RED color
   delay(500);
   RGB_Color(20, 255, 4); //Showing the shade of green color
   delay(500);
   RGB_Color(10, 0, 255); //Showing the shade of blue color
   delay(500);
   RGB_Color(255, 255, 10); //Showing the shade of yellow color
   delay(500);
   RGB_Color(19, 255, 255); //Showing the shade of cyan color
   delay(500);
   RGB_Color(255, 50, 255); //Showing the shade of magenta color
   delay(500);
   RGB_Color(255, 20, 147); //Showing the shade of deep pink color
   delay(500);
   RGB_Color(255, 40, 40); //Showing the shade of deep pink color
}
void RGB_Color(int i, int j, int k){
   ledcWrite(RED_channel, i);
   ledcWrite(GREEN_channel, j);
   ledcWrite(BLUE_channel, k);
}

查看结果 - 示例1

图1:程序所需的实际电路以及在RGB LED上显示不同颜色和色调的结果

示例2:在Wokwi上使用Arduino Uno和RGB LED

Wokwi是一个在线平台,可以在其中制作虚拟电路,编写控制这些电路的程序,然后测试结果。这是一个易于使用且免费的服务,可以开始学习物联网。Wokwi链接如下:

Wokwi链接:https://wokwi.com/

登录Wokwi后,使用Arduino Uno项目。

首先,在右侧区域制作电路,并在左侧代码区域使用C语言编写代码,如图2所示。

电路设计步骤和编码

步骤1 - 登录Wokwi。在Wokwi模拟器上启动一个新的Arduino Uno项目。

步骤2 - 使用“+”号在虚拟电路区域放置一个RGB LED。

步骤3 - 将RGB LED的最长引脚连接到Uno的GND。

步骤4 - 使用三个红色、绿色和蓝色的LED。将LED的短引脚连接到Uno的GND,并将另一端连接到Uno引脚(3、5、6)。

步骤5 - 假设LED的第二个引脚最长(负极),将RGB的第一个引脚连接到红色LED的正极,第三个引脚连接到绿色LED的正极,第四个引脚连接到蓝色LED的正极,如图2所示。

步骤6 - 使用左侧的Wokwi代码区域编写C程序。

步骤7 - 使用Wokwi上的播放按钮编译程序。检查结果。

代码

//Showing the shades of RGB and R, G, B LED demo
const int pinRedCol = 3;
const int pinGreenCol = 5;
const int pinBlueCol = 6;

void setup() {
   pinMode(pinRedCol, OUTPUT);
   pinMode(pinGreenCol, OUTPUT);
   pinMode(pinBlueCol, OUTPUT);
}

void loop() {
   RGB_Color(255, 5, 5); //Showing the shade of RED color
   delay(500);
   RGB_Color(20, 255, 4); //Showing the shade of green color
   delay(500);
   RGB_Color(10, 0, 255); //Showing the shade of blue color
   delay(500);
   RGB_Color(255, 255, 10); //Showing the shade of yellow color
   delay(500);
   RGB_Color(19, 255, 255); //Showing the shade of cyan color
   delay(500);
   RGB_Color(255, 50, 255); //Showing the shade of magenta color
   delay(500);
   RGB_Color(255, 20, 147); //Showing the shade of deep pink color
   delay(500);
   RGB_Color(255, 40, 40); //Showing the shade of deep pink color
}
void RGB_Color(int i, int j, int k){
   analogWrite(pinRedCol, i);
   analogWrite(pinGreenCol, j);
   analogWrite(pinBlueCol, k);
}

查看结果

程序编译后,按下Wokwi上的播放按钮即可立即看到结果。

图2:Wokwi上的电路图以及在RGB LED和单色LED上显示颜色和色调的结果。

本文介绍了使用RGB LED的方法。第一个示例显示了使用ESP32微控制器和RGB LED的实际电路。另一个示例演示了在Wokwi上使用Arduino Uno和RGB LED时颜色混合。

更新于:2023年4月18日

浏览量:357

开启你的职业生涯

完成课程获得认证

开始学习
广告