使用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时颜色混合。