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

用micro:bit轉出七彩霓虹燈

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

如果您不知道什麼是MbitBot 或是還不會使用伺服馬達與直流馬達的小夥伴,可以先閱讀功能介紹與單元一的文章喔!

MbitBot 功能介紹

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

前言

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

MbitBot硬體規格圖

有看到嗎?總共有四顆白色四方型,且旁邊有用黃底黑字印著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。

MbitBot RGB LED
MbitBot RGB LED

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

事前準備

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

micro:bit、MbitBot、micro USB 傳輸線
micro:bit、MbitBot、micro USB 傳輸線

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

Coding Time !

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

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

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

點選「Neopixel」 積木

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

選擇P12 以及在leds 的前面填入4
選擇P12 以及在leds 的前面填入4

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

將「strip show color red 」積木到重複無限次積木中
將「strip show color red 」積木到重複無限次積木中

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

測試MbitBot LED
測試MbitBot LED

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

調整LED亮度

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

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

選擇「strip set pixel color at 0 to red 」程式積木

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

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

 MbitBot LED 應用
MbitBot LED 應用

再多學一個!

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

「strip show 」顏色選單

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

調整RGB比例混出想要的顏色
調整RGB比例混出想要的顏色
 MbitBot LED 應用
MbitBot LED 應用

結語

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

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

  MbitBot LED 應用
MbitBot LED 應用

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

一起來玩MbitBot 吧!