搜尋程式碼

ESP32 教學 6/55 - 使用 RGB LED 項目 2.3 - SunFounder 嘅 ESP32 IoT 學習套件

ESP32 教學 6/55 - 使用 RGB LED 項目 2.3 - SunFounder 嘅 ESP32 IoT 學習套件

喺呢個教學入面,我哋會學吓點樣用ESP32微控制器嚟控制一粒RGB LED。呢個項目會幫你明白點樣接駁RGB LED,同埋用PWM(脈衝寬度調製)訊號嚟控制佢嘅顏色。完成呢個教學之後,你就可以透過調整每個LED元件嘅強度嚟整出任何顏色組合。呢個係整視覺上吸引嘅項目嘅基本技能。

為咗更深入了解RGB LED同佢嘅混色能力,我哋會探討接線同埋用ESP32控制佢所需嘅代碼。如果你需要視覺輔助,記得睇吓條片(片入面03:20)嚟了解接線同代碼設定嘅更清楚解釋。

硬件解釋

呢個項目嘅主要組件包括ESP32模組、RGB LED同電阻。ESP32係一個功能強大嘅微控制器,內置Wi-Fi同藍牙,好適合物聯網應用。RGB LED由三個獨立嘅LED(紅、綠、藍)組成,裝喺同一個封裝入面,可以根據三種顏色嘅組合產生好多唔同顏色。

喺我哋嘅設定入面,RGB LED會用共陽極配置接線,即係陽極腳連接到正電壓,而每種顏色嘅陰極腳就獨立控制。咁樣,我哋就可以透過ESP32發送PWM訊號嚟調整每種顏色嘅亮度。

數據手冊細節

製造商SunFounder
零件編號RGB-LED-4PIN
共同類型共陽極
正向電壓(每個LED)2.0 V(紅)、3.2 V(綠)、3.2 V(藍)
最大電流(每個LED)20 mA
工作溫度-25至85 °C
封裝4針通孔

  • 每種顏色用一個220 Ω電阻嚟限制電流同防止損壞。
  • 確保共同腳連接到適當嘅電壓(ESP32用3.3 V)。
  • 接RGB LED時要檢查極性,避免反向損壞。
  • 用PWM嚟控制亮度級別,建議頻率大約5000 Hz。
  • 接成個設定之前,先單獨測試每種顏色。

接線指示

要將RGB LED接到ESP32,首先識別RGB LED上面嘅針腳。最長嘅針腳係共陽極,會連接到ESP32嘅3.3 V供電。另外三個針腳分別係紅、綠同藍。喺我哋嘅設定入面,將紅色針腳連接到GPIO 27,綠色針腳連接到GPIO 26,藍色針腳連接到GPIO 25。每個針腳都會接一個220 Ω電阻。

首先將RGB LED放喺麵包板上,確保共陽極針腳喺左邊。將紅色針腳插入麵包板,連接到電阻嘅一端,電阻嘅另一端去GPIO 27。對綠色同藍色針腳重複呢個步驟,將綠色針腳連接到GPIO 26,藍色針腳連接到GPIO 25。最後,將共同針腳連接到ESP32嘅3.3 V針腳嚟完成電路。記得將ESP32嘅地線都連接到麵包板。

ESP32_RGB_LED_wiring_lesson_06

代碼示例同講解

喺代碼入面,我哋首先用常數嚟定義RGB LED針腳。例如,const int redPin = 27;定義紅色LED嘅GPIO針腳。我哋仲設定PWM頻率同解析度,用const int freq = 5000;const int resolution = 8;。咁樣就設定好控制每種LED顏色亮度所需嘅參數。

const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

跟住,我哋喺setup()函數入面為每種顏色配置PWM通道。ledcAttach()函數將每個針腳連接到相應嘅PWM通道。呢個設定確保我哋可以獨立控制每種顏色嘅亮度。

void setup() {
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

loop()函數入面,我哋用setColor()函數嚟改變LED顏色。傳入呢個函數嘅值代表紅、綠、藍嘅強度。例如,呼叫setColor(255, 0, 0);會將LED設為紅色。每次改變顏色之後,我哋用delay(1000);等一秒先切換到下一個顏色。

void loop() {
  setColor(255, 0, 0); // 紅色
  delay(1000);
  setColor(0, 255, 0); // 綠色
  delay(1000);
}

示範/預期效果

完成接線並將代碼上傳到ESP32之後,你應該會見到RGB LED循環顯示各種顏色:紅、綠、藍、黃、紫同青。如果LED冇正確著燈,檢查吓接線,確保共陽極連接到3.3 V。另外,如果你見到意料之外嘅顏色,檢查吓連接到LED針腳嘅電阻。

正如條片入面示範嘅(片入面10:45),調整setColor()函數入面嘅值可以整出唔同顏色。試吓唔同組合,睇吓RGB LED點樣反應。

影片時間戳

  • 00:00 - RGB LED 簡介
  • 03:20 - 接線講解
  • 10:45 - 程式碼逐步解說
  • 12:30 - 混色示範

圖片

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
ESP32_RGB_LED_wiring_lesson_06
ESP32_RGB_LED_wiring_lesson_06
806-ESP32 Tutorial 6/55 - Arduino code to control RGB LED with ESP32
語言: C++
// Define RGB LED pins
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

// Define PWM frequency and resolution
const int freq = 5000;
const int resolution = 8;

void setup() {
  // Set up PWM pins
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

void loop() {
  setColor(255, 0, 0); // Red
  delay(1000);
  setColor(0, 255, 0); // Green
  delay(1000);
  setColor(0, 0, 255); // Blue
  delay(1000);
  setColor(255, 255, 0); // Yellow
  delay(1000);
  setColor(80, 0, 80); // Purple
  delay(1000);
  setColor(0, 255, 255); // Cyan
  delay(1000);
}

void setColor(int red, int green, int blue) {
  ledcWrite(redPin, red);
  ledcWrite(greenPin, green);
  ledcWrite(bluePin, blue);
}

資源與參考資料

文件📁

冇文件可用。