WS2812B燈/燈帶算是普通RGB 三色LED的強化版。
一般的三色LED說穿了就是把三顆不同色的LED壓縮在一起,控制是還是需要3隻pin腳各自控制R、G、B的顏色
而WS2812B燈帶就是在以上三色LED的基礎中加入了一顆超級微型的IC-WS2812B把所需的控制連接腳簡化為1隻pin Din就夠了
嚴格來說"WS2812B"是這種燈內部的IC名稱,但現在"WS2812B"這個字都泛指用這種IC的燈帶
而WS2812B的另一個特點就是像可以把訊號傳導到下一顆同類的燈上,有點像磁石一樣可以不斷連接下一顆,所以我們在控制板上只需要一隻pin腳作輸出理論上就可以控制無限顆WS2812B燈(實際上可控燈的數量是受控制板的RAM所限,以UNO為例可控制WS2812B燈的上限大約是500顆,MEGA則1000顆以上也沒問題)
所以一般WS2812B燈帶是有分方向的,有Din的一方是接收控制板的訊號,Dout/Do則是用作分享訊號到下一顆燈的Din上。所以反向了把控制板接上Dout/Do上燈帶是完全沒反應的
市面可以買到的WS2812B燈帶多為長條狀,也有陣列式的版本,其原理和編和方式基本一樣,不過要留意供電的電壓,供Arduino使用的基本為5V。
V2版本的IS shield上已經內置了5顆WS2812B在pin 6腳位了
Step2: 在Arduino IDE內Sketch>Include Library>Add.ZIP Library...找到剛下載的Zip檔
如果成功安裝的話,會跳出下面的訊息
如本身已經安裝了該Library的話,則會彈出以下訊息
打開Examples>Neopixel>Strandtest
其中LED_PIN代表用的連接腳、LED_COUNT代表你使用的總燈粒數,要改成你實際使用的數值。
如果使用V2板,燈帶剛好就在pin 6所以LED_PIN不用改,而LED_COUNT(總燈粒數)應改為5
完成後上載測試。如果燈帶能亮起來並不斷變色、閃爍說明成功
為了方便之後的編程,把上面example的程式:
1. 另存新檔在桌面
2. 刪除註解部份
3. 刪除loop的內容
4. 把所有function (即loop { } 往後) 的內容放置到另一個分頁
往後使用WS2812B時都以左下這個配置為基礎不動,再加上其他程式;而function部份刪除也不影響運作
Example內的function colorWipe( );可以令燈帶一顆接一顆順序亮起,其中頭3個參數控制RGB值、第4個參數則控制下一顆燈隔多少時間再亮
以colorWipe( );讓燈帶以流水燈亮起紅(每顆燈間隔1秒)>綠(間隔0.5秒)>藍(間隔1/4秒)的順序
strip.setPixelColor();指令可以把RGB的資料存放入WS2812B入,配合strip.show();顯示結果。
第一個參數是控制第幾顆LED燈,後3個參數則是RGB值。
以strip.setPixelColor();讓燈帶亮起順序為紅黃綠青藍的結果
黃=紅+綠,青=綠+藍。
*往下練習皆由lv1的程式為基礎,只加入新的變數及只更改loop內的程式,其他部份(setup,function等)不變
設定2號燈亮綠燈,其他燈不亮。
當按下紅按鈕時,亮的燈向左移動,當按下藍按鈕時,亮的燈向右移動