micro:bit正面的25個LED矩陣佔用了系統單晶片的12個接腳(註:Nordic nRF51822晶片有32個GPIO腳),透過程式週期性地設定這些接腳的高、低電位輸出,便能點亮或熄滅特定LED。
安裝Adafruit_Microbit程式庫
Adafruit公司替micro:bit寫了一個Adafruit_Microbit程式庫,其中包含控制LED矩陣、顯示捲動文字和自訂圖像的功能。這個程式庫使用了其他兩個程式庫,請先在Arduino IDE中,選擇「草稿碼→匯入程式庫→管理程式庫」指令,在「程式庫管理員」面板中輸入“adafruit gfx”關鍵字,安裝“Adafruit GFX”(圖像特效)程式庫。
接著搜尋”blep”關鍵字,安裝BLEPeripheral(低功耗藍牙週邊)程式庫。
最後,下載Adafruit_Microbit程式庫(.zip壓縮檔),將它解壓縮到「文件/Arduino/libraries」路徑底下(習慣上,我們會刪除程式庫資料夾名稱後面的“-master”)。
這個程式庫裡面包含Adafruit為micro:bit的LED矩陣顯示器製作的5像素高字體,檔名是TomThumb.h。程式庫定義了LED_ON和LED_OFF兩個常數,分別代表點亮LED(高電位)和關閉LED(低電位):
- LED_ON:1
- LED_OFF:0
Adafruit GFX程式庫提供多個在螢幕上繪圖的指令,像是畫直線、矩形、圓形…等等,通常配合OLED顯示器使用;micro:bit的LED矩陣顯示器的解析度很小,限制了GFX發揮的空間,但仍可執行GFX的繪圖指令,底下列舉GFX程式庫的一些方法:
- drawLine(x0座標, y0座標, x1座標, y1座標, 色彩):畫直線
- drawRect(x座標, y座標, 寬, 高, 色彩):畫矩形
- drawCircle(x座標, y座標, 半徑, 色彩):畫圓
其中的「色彩」參數,在micro:bit控制板上面只有LED_ON和LED_OFF,也就是1(亮)和0(不亮)兩個可能值。底下是Microbit程式庫提供的方法:
- begin():初始化Microbit物件
- drawPixel(x座標, y座標, 色彩):繪製一個像素
- fillScreen(色彩):填滿螢幕
- clear():清除畫面
- show(點陣陣列):顯示預設或自訂的符號
- scrollText(字串, 延遲毫秒):捲動顯示文字,預設捲動速度150毫秒。
- print(字串):顯示字串(若超過一個字,文字會自行捲動)。
- print(整數):顯示數字
- print(浮點數, 精確度):顯示小數點數字,預設精確度到小數點3位。
捲動LED矩陣文字的Arduino程式
程式首先引用Adafruit_Microbit.h程式庫,並且宣告一個Adafruit_Microbit_Matrix類型的變數(物件):
在LED矩陣上呈現捲動的“Hello World!”文字,接著顯示從0計數到9的數字,完整程式如下:
#include <Adafruit_Microbit.h> Adafruit_Microbit_Matrix microbit; void setup() { // 初始化Microbit物件 microbit.begin(); } void loop() { microbit.print("Hello World!"); for (byte i=0; i<10; i++) { microbit.print(i); delay(500); } }
顯示自訂點陣圖
自訂的點陣圖透過一個位元組類型(byte或寫成uint8_t)陣列定義,例如,底下的敘述定義一個名叫“invader”的圖像;由於每一列的顯示寬度是5像素,若用8位元資料定義,資料左邊的3個高位元將被忽略。
Miclrobit程式庫預設了幾個自訂圖像:
- HEART:心型
- NO:叉叉
- YES:打勾
底下的程式將每個1秒顯示自訂點陣圖、心型、叉叉和打勾。
#include <Adafruit_Microbit.h> Adafruit_Microbit_Matrix microbit; // 自訂的圖像 const byte invader[] = { B01110, B10101, B10101, B01110, B10101, }; void setup() { microbit.begin(); } void loop() { // 顯示自訂點陣圖 microbit.show(invader); delay(1000); // 畫一個心,圖像前面要冠上物件名稱“microbit”。 microbit.show(microbit.HEART); delay(1000); // 畫一個叉 microbit.show(microbit.NO); delay(1000); // 畫一勾 microbit.show(microbit.YES); delay(1000); }
最後,在Arduino IDE中選擇「檔案→範例→Adafruit microbit Library→matrixdemo」,可看到繪製直線、圓形和矩形等,GFX程式庫的指令示範。