材料列表:
micro:bit主板
micro USB傳輸線
micro:bit擴展板
杜邦線
OLED(SSD1306)
SSD1306-128x64
SSD1306-128x32
程式控制線路接法
加入擴充積木模組(Library)
OLED1306 是 I2C 的裝置,I2C 裝置都有一個位址 ( Address ),可以讓 micro:bit 進行識別和通訊,在使用 OLED1306 之前,必須要設定位址,這組積木可使用的位址有 60 和 61,預設直接用 60 就能初始化並進行控制。
通常初始化只需要設定一次,因此這個積木會直接放在「當啟動時」積木裡。
當按下A按鈕時,顯示數字;當按下B按鈕時,顯示文字
「show a number」積木可以讓 OLED 在指定的座標顯示數字,可修改 xy 座標、顯示的數字 number 和數字顏色,若數字長度超過一行的顯示範圍,會自動折行到第二行。
「show string」積木可以讓 OLED 在指定的座標顯示文字,可修改 xy 座標、顯示的文字 string 和文字顏色,若文字長度超過一行的顯示範圍,會自動折行到第二行。
「show a number」/「show string」的座標並非真正的「座標」,而是字元大小,座標的範圍取決於畫面是否縮放。
放大模式 ( zoom: true ):x 範圍 0~12,y 範圍 0~3。
正常模式 ( zoom: false ):x 範圍 0~25,y 範圍 0~7。
文字顏色只能填入 1 和 0,1 為白色 ( 或藍色 ),0 為黑色 ( 背景白色或藍色 )。
一開始顯示一些數字/文字字串;當按下A按鈕時,進入放大模式 ( zoom: true );當按下B按鈕時,進入正常模式 ( zoom: false )
問題一:為什麼正常模式 ( zoom: false )的x範圍沒有變?
按下 A 按鈕時,OLED 就會畫出四個逐漸往右下移動的四邊形(邊長20像素,每次xy軸各移動2像素)。
「draw a rectangle」積木可以指定「左上」( x1, y1 ) 與「右下」(x2, y2) 的座標,繪製一個「空心」的四邊形。
OLED 預設採用 zoom:true ( 放大模式 ) ,所以數值會乘以 2 顯示。
OLED 繪圖的 x 與 y 必須是「正整數」。
micro:bit 啟動後,OLED 會由中心點畫出十字形狀 ( 上到下一直線、左到右一直線 );當按下A按鈕時,進入放大模式 ( zoom: true );當按下B按鈕時,進入正常模式 ( zoom: false )
使用set pixel繪製圖案,按下 A 按鈕時正常顯示螢幕顏色,按下 B 按鈕時反轉螢幕顏色
顯示文字/數字/圖案,按下 A 按鈕時開啟螢幕,按下 B 按鈕時關閉螢幕
繪製「正弦波形」
「正弦波形」是一種來自三角函數中的正弦比例的曲線波形,當 x 不斷改變時,透過震幅、角度和正弦函數計算 y 座標,模擬週期性的波形圖案。
正弦波形 y 座標公式:y = y0 + n × sin(deg) ( y0:y 軸位置、n:震幅大小、deg:角度 )
了解公式原理後,就可以開始設計 OLED 的繪圖程式:
按照公式,先放入對應的 x、y、y0、n、deg 變數,並設定數值。
使用重複迴圈,重複 128 次 ( 因為 OLED 的 x 方向解析度只有 128 點 )
每次重複時
計算 y 座標 ( 注意!MakeCode 的三角函數使用「弧度」,要將角度除以 57.7 轉換 )。
OLED 繪製在 (x, y) 繪製亮點。
x 增加 1。
deg 增加 20。
繪製「圓形」
「圓形」是透過三角函數,計算圓周上的 x 與 y 座標所畫出的圖形。
圓形座標公式 ( x0、y0 為圓心座標,r 為半徑,deg 為角度 ):
x 座標:x0 + r × cos(deg)
y 座標:y0 + r × sin(deg)
了解公式原理後,就可以開始設計 OLED 的繪圖程式:
按照公式,編輯 circle 函式內容。
使用計次迴圈,重複 deg 次 ( 360 度可以畫出圓形,180 度可以畫出半圓形 )。
每次重複時計算 x、y 座標,並在 OLED 繪製亮點。
函式編輯完成後,於啟動時呼叫 circle 函式。
指定起始點繪製「弧形」
顯示手繪圖案