使用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

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.