最近文章

Arduino筆記(二十六):控制圓形16位元5050全彩LED

[2017/06/08]
每次走進電子材料行,都會看到各式各樣的LED燈條,想說要買一個燈條來瞭解一下如何運用 Arduino 控制 LED燈。剛好網購一批零件時,發現商家有賣一款看起來還不錯的環形 LED燈,有16個全彩 LED。就來看看如何撰寫程式控制,以下是安裝完成的圖。


[FC-102 Rainbow LED]

型號:16位元圓形5050全彩LED模組
尺寸:直徑60mm
晶片:WS2811(內置於LED
LED5050封裝RGB全彩高亮
電壓:5V



背面有六個接點,兩組VCC & GND是一樣的,本以為要控制 LED需要兩個接點,DIN跟DOUT,後來發現這個 DOUT是可以繼續連接下一個環形 LED的 DIN,只要一條訊號線,就可以控制這麼多個 LED燈的顏色、亮度變化,真是太神奇了。


[材料]

• Arduino Leonardo x 1
• FC-102 環形 LED模組
• 麵包板 x 1
• 連接線 x 若干條

[接線]

將環形 LED DIN接到 Arduino Pin 5,LED燈的VCC及GND,分別接Arduino的 5V及GND。

[安裝FastLED Library]

• 到 GitHub:FastLED 下載 Library,按右邊綠色選項「Clone or download」,再選「Download ZIP」。

• 將下載的壓縮檔解壓縮,放在 Arduino 主程式下的 libraries目錄內,以我的電腦來說,Arduino安裝在 C:\Program Files (x86)\Arduino,點進目錄有一個 libraries的子目錄,下載後解壓縮的目錄,整個放進  libraries 目錄,重新啟動 Arduino即可。

[範例程式]

安裝完成 FastLED Library後,執行 Arduino,就可在「檔案 File」➔ 範例 [Examples] ➔ FastLED  中找到其中一個範例程式:FirstLED,簡要瞭解一下程式的內容:
#include "FastLED.h"

// 有幾個LED燈
#define NUM_LEDS 16

// Arduino的哪個接腳接到LED燈的DIN
#define DATA_PIN 5

// LED 燈的陣列
CRGB leds[NUM_LEDS];

void setup() {
	  	delay(2000);
      FastLED.addLeds(leds, NUM_LEDS);

void loop() {
   // 將白色LED訊號送出 
   for(int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1) {
      // 將 LED 燈顯示為白色
      leds[whiteLed] = CRGB::White;

      // 顯示LED (只有上述陣列中的一個 LED會亮)
      FastLED.show();

      // 等待 0.1秒
      delay(100);

      // 將該LED熄滅
      leds[whiteLed] = CRGB::Black;
   }
}

[參考資料]

• GitHub:FastLED / FastLED

沒有留言