micro:bit 自走車登月計畫 – 單元(三) 魔幻色彩

這個單元要教大家如何控制micro:bit 小車 MoonCar(登月小車) 車身周圍的RGB LED。但在開始撰寫程式之前,請記得確認您的MakeCode 有沒有安裝MoonCar 的程式積木庫喔!還沒有安裝的朋友可以觀看上一單元,連結如下:

小知識:

MoonCar 的RGB LED 與一般常見的RGB LED 不太一樣,雖然都是可以發光,並且透過R、G、B 三色混合製造出不同顏色,但是使用方式可是天差地北呢~

micro:bit 自走車登月計畫 – 單元(三) 魔幻色彩

一般的RGB LED 有四支腳,是透過連接R、G、B 三支接腳,並依照是屬於共陽或共陰來連接正極或負極,透過調整連接R、G、B 三支接腳的輸出電壓調整色彩。

MoonCar 的RGB LED 內建WS2812 晶片,接腳除了VCC 與GND 外,還有輸入與輸出兩個接腳,相較於一般的RGB LED 在連接上可以採用串聯的方式做連接。

雖是串聯,但因為控制色彩與亮度的部份,是由控制端將每顆燈的設定資料包好後,丟給第一顆,再由第一顆傳給下一顆,以此類推直到每顆燈都收到自己的資料,所以可以做到個別控制。與一般的RGB LED 相比下,可以用單一訊號線控制全部的燈,免去需要接很多線的困擾,同時也節省控制端的腳位。

基礎程式撰寫:

在程式列表中,可以在登月小車下方看到"Neopixel",這是由Adafruit 所製作用來控制內建WS2812 的LED ,我們將使用這個程式庫來控制MoonCar 的LED 。

點開Neopixel ,接著點選第一個程式並拖拉到當啟動時。

這個程式作為初始化設定使用,可以選擇連接的腳位、要控制幾顆燈以及所使用的LED類型。

下圖是MoonCar 的設定,在連接的Pin 腳要選擇P12,控制燈的數量要選擇8 ,所使用的LED 類型與預設相同所以不用更改。

設定完成後,就可以開始點亮LED 燈了,找到下圖的程式「( strip ) show color ( red )」,將它拖拉到重複無限次裡。

這個程式的下拉選單可以選擇它預設好的顏色,您可以選擇您想要的顏色。

選擇完顏色後即可下載程式到micro:bit 裡,應該會如下圖一樣,所有的燈亮起您設定的顏色。

上述的程式是一次控制所有的LED 燈,如果要個別控制的話需要使用其他程式來實現。在Neopixel 的下方還有一個"更多",在更多裡面的第一個程式「( strip ) set pixel color at ( 0 ) to ( red )」就是可以用來設定單顆LED 的程式,將其拖曳出來。

程式中可以輸入的數字表示您要控制第幾顆燈,在程式的邏輯裡是從0 開始算起,而不是從我們習慣的1 ,所以如果我們要設定第1 顆LED 發亮,在程式中需要填入0 ,如果是設定第8 顆LED 發亮,在程式中需要填入7 。這個程式的下拉式選單一樣可以選擇它內建的顏色。

您可以如下圖一口氣設定8 顆LED 的顏色。

程式寫到這邊可不要太興奮直接下載喔~與上一個程式不同的是,這只是設定每顆燈待會要執行的狀態而已,還少了發送出去的程式。所以我們還需要加上如下圖的這個程式「( strip ) show」

將這個程式放到設定程式的後面,這樣就大功告成囉~

下載完程式後,如下圖所示:

進階程式撰寫:

知道如何個別控制LED 燈後,我們可以透過程式邏輯讓LED 燈變化得更有趣。

如下圖所示~從積木列表裡的迴圈內拉出計次的程式,並將點亮LED 的程式放在計次裡,而點亮第幾顆燈則由計次程式決定,我們可以加入一個暫停時間的程式,在它每點亮一顆燈時暫停一下,如此就能做到逐一點亮的效果。

若是將程式撰寫成如下圖這樣,將會逐一點亮紅色,並等待8 顆LED 都亮紅色時換成逐一點亮為藍色,重複循環。

在"更多"的程式列表內,還有兩個程式會比較常用到,如下圖所示~「( strip ) set brightness ( 255 )」與「red ( 255 ) green ( 255 ) blue ( 255 )」

這兩個程式的功能分別是~ 1. 設定亮度,通常放在"當啟動時"範圍是0~255。2. 設定R、G、B 三顏色的比例,這個程式可以混和出自己想要的顏色,如下圖所示可替換掉內建的顏色。

結論:

在本單元學習到了常用的功能,其實在Neopixel 裡還有很多程式可以使用,大家可以自己試試看。下一個單元將教大家使用循線感測器,讓MoonCar 能沿著黑色線移動,下一個單元見!