趣玩MbitBot 單元(二) 用micro:bit轉出七彩霓虹燈!

Updated: Jan 4, 2019



上個單元有教大家使用伺服馬達以及直流馬達,是不是非常簡單上手呢?

如果您不知道什麼是MbitBot 或是還不會使用伺服馬達與直流馬達的小夥伴,可以點選:

MbitBot 功能介紹 (讓您串聯更多可能)

趣玩MbitBot 單元(一) 用micro:bit 動起來!


前言:

這個單元將教大家如何使用MbitBot 上面的RGB LED ,並透過程式控制使得這些LED 發出我們指定的顏色。什麼!您不知道它在哪裡?如下圖所示:



有看到嗎?總共有四顆白色四方型,且旁邊有用黃底黑字印著RGB1 、RGB2、RGB3、RGB4。

這四顆RGB LED 可不是普通的LED 喔,它們可是內含驅動晶片的WS2812 RGB LED 呢!

到底有多了不起呢?通常我們在使用RGB LED 時(以共陰極為例),需要連接四條線,分別是供給紅色、藍色、綠色的電源線與一條接地線,這還是只有一顆LED 的接線喔!如果您要接四顆的話就得接16 條線,更別說是接超過10 顆了,一想到就覺得心煩意亂壓!!!


*共陰極LED:如字面上的意思,這個LED 內的RGB 三色燈為共地,接腳分別為R、G、B、Gnd,R、G、B 未送電時為不亮,供給電壓時依照發出的訊號發亮。還有另一種為共陽極LED ,接腳分別為R、G、B、Vcc,R、G、B 未送電時發亮,供給電壓時依照發出的訊號微亮或不亮。


若是WS2812 RGB LED 就不一樣囉,它可以一顆串一顆一直串下去,不管您今天串的是10 顆、30 顆還是60 顆,從頭到尾總共只需要3 條線(Vcc,DIN,Gnd),而且每顆LED 雖然是串在一起,但是卻可以各別控制喔!例如您想要讓第一顆亮紅燈,但是第二顆想要亮綠燈,想要哪顆亮什麼燈都沒有問題。


那資料的傳輸方式?到底是怎麼辦到的呢?您可以想像我們將每顆LED 發亮的訊息全部包在一起後,再一次傳給大家。因為LED 是串在一起的,所以訊息會從第一顆燈傳進去,第一顆燈拿到自己的訊息後,會把剩下的訊息傳給下一顆LED ,以此類推...這樣訊息就會被送到我們指定的LED 。跟考試時發考卷很類似,自己拿完一張後就把剩下的考卷往後傳,大家拿到考卷後就開始作答XD。


說了這麼多,就讓我們實際用程式控制看看,開始讓這神奇的LED 發光發亮吧!


事前準備:

準備好micro:bit、MbitBot,以及micro USB 傳輸線,並MakeCode 裡安裝好MbitBot 程式積木,還沒安裝的小夥伴可以去看我們的趣玩MbitBot 單元(一) 用micro:bit 動起來!,裡面有教您怎麼安裝喔~

接著將micro:bit 插在MbitBot 上,並將micro USB 線接在micro:bit 上以便待會兒傳輸程式。


Coding Time !

要控制這麼特別的WS2812 RGB LED ,當然也需要特別的程式來處理囉。我們控制LED 的程式積木是使用 Adafruit 公司撰寫的 NeoPixel Drive ,當您在安裝MbitBot 的程式積木時,會一並安裝NeoPixel ,所以有照著我們單元一步驟的小夥伴,就不需要擔心囉。


首先我們先挑戰最簡單的,讓所有的燈都發出同樣的顏色。

打開MakeCode 並點選積木列表裡的Neopixel。


在控制之前必須要先設定我們LED 的數量以及接在哪個腳位,從Neopixel 裡拉出第一個程式積木,並放在當啟動時積木裡。從MbitBot 詳細接腳資料圖中(在MbitBot 功能介紹 (讓您串聯更多可能)文章中有喔),可以看到我們的LED 是接在P12 ,數量是四顆,所以要選擇P12 以及在leds 的前面填入4 。如下圖所示:


設定完成後,從Neopixel 裡拉出strip show color red 的積木並放到重複無限次的積木內,如下圖所示:


將上述程式上傳至micro:bit ,上傳完成後將micro USB線改接在MbitBot 上就能為大家供電囉!打開開關看看,是不是所有的LED 都發出紅色光呢?


不過LED 是不是好像有點太亮了!沒有關係,Neopixe 內有個"更多"的選項,點選進去可以找到調整亮度的程式積木strip set brightness 255 ,將程式積木拉到當啟動時積木內,並將255 這個數字改小一點即可。


接下來~我們進一歩的嘗試,讓每顆燈都亮不一樣的顏色,其實很簡單喔!

一樣從更多裡面找到strip set pixel color at 0 to red 並將它拉到重複無限次的積木內,color at 後面的數字代表控制第幾個LED (因為在程式內第0 顆表示我們實際LED 的第一顆,所以這4 顆LED 順序為0-3喔),而最後面的選項可以選擇亮什麼顏色。


再從Neopixe 內拉出strip show 放在我們剛剛拉出的積木下方,這個表示將我們要發出的顏色與第幾顆LED 要發亮...等設定顯示出來。如果沒有strip show 這個程式積木的話,MbitBot 上的LED 是不會發亮的喔!我們也可以設定好每顆LED 後,再放入strip show 這個程式積木,如下圖:


上傳完程式後如下圖所示:


再多學一個!

那如果在顏色列表內沒有看到自己想要的顏色怎麼辦?


在Neopixe 的更多列表內可以找到red 255 green 255 blue 255 這個程式積木,將它放入color 內取代原本的顏色,透過調整這三個數字的比例即可混出您要的顏色囉!



結語:

這樣我們就學會控制WS2812 RGB LED 燈了,其實還有很多控制方式,Neopixe 內也有其他程式積木我們沒有介紹到,其他的就留給各位小夥伴慢慢發覺囉~

依照慣例考考大家,試著寫出下面的控制程式吧!


下一個單元將教大家如何使用MbitBot 上面的Light Sensor 並製作一個小專案!

一起來玩MbitBot 吧!


#MbitBot #microbit #MakeCode

創客萊吧MakerLab

高雄市左營區博愛二路202號B1F

0989-250-580