Bit 水平儀

我們要使用 Bit 板來模擬一個水平儀:      

Bit 板有一個陀螺儀,可以用來偵測板子 X 軸和 Y 軸傾斜的角度。另外也有 LED 矩陣,可以用來反映傾斜的角度。我們將結合這兩者,用來製作一個 Bit 水平儀。讓我們開始吧!

陀螺儀

Webduino Bit 板有一個 MPU-9250 的晶片,其中包含一個 3 軸陀螺儀,可以用來偵測 X 軸的角度 (roll) 和 Y 軸的角度 (pitch),參考以下圖示:

讓我們建構一個簡單的方塊程式圖 程式連結

這個程式可以偵測 roll 和 pitch 的值。它的 JS 代碼如下所示:

var mpu9250;


boardReady({board: 'Bit', device: 'bit77730e', transport: 'mqtt', multi: true}, function (board) {
  board.samplingInterval = 250;
  mpu9250 = getMPU9250(board);
  mpu9250.on(webduino.module.MPU9250Event.ANGLE_MESSAGE, function () {
    document.getElementById("demo-area-01-show").innerHTML = (['row:',mpu9250.angVals[0],("<br/>"),'pitch:',mpu9250.angVals[1]].join(''));
  });
});
1
2
3
4
5
6
7
8
9
10

LED 矩陣

Webduino Bit 有一個 5x5 的 LED 矩陣。接下來建構一個簡單的方塊程式,讓板子亮起一顆單獨的 LED 燈。程式連結

來看一下它的 JS 程式碼:

var matrix;

boardReady({board: 'Bit', device: '1234', multi: true, transport: 'message', window: window.top.frames[0]}, function (board) {
  board.samplingInterval = 250;
  matrix = getMatrix(board, 4, 25);
  matrix.setColor((4 - 1 + ( 2 - 1) * 5 ), '#33ff33');
});
1
2
3
4
5
6
7

注意在方塊程式碼中,row 和 column 的範圍為 1~5,但是在 JS 程式碼中,範圍則從 0~4。這是為什麼你會看到這個式子:((4-1)+(2-1)*5),它告訴我們,方塊程式碼中位置為 (4, 2) 的 LED 燈,在 JS 中位置變成 (3, 1),順序編號為 (3+1*5=8)。

結合陀螺儀和 LED 燈

現在可以結合陀螺儀和 LED 燈的程式代碼來製作一個 Bit 水平儀了。我還加上了一些簡單的運算邏輯,用來把 roll 和 pitch 的值量化到範圍 1~5。最後的程式碼和結果如下所示。注意:要用 Bit 操作的話,你要先進到 jsFiddle,把設備 ID 改成你的,並把 Bit 板正確連到網路。一切就緒之後,可以執行程式碼了,就是這樣!

練習

把設備 ID 改成你自己的,並試著在頁面加上更多內容或描述。