MSA301三軸加速度感應器能夠感應加速度在X、Y、Z三個軸向的強度,它是I2C界面,一般將這個感測器接到各個開發板的I2C接腳即可使用。PocketCard Lite(V3)本身即已內建MSA301,因此可以直接旋轉PocketCard便能偵測三個軸向的加速度感測值。除了感測加速度的值之外,它還具有偵測是否受到敲擊的功能,在極短暫的時間內感測被輕敲一次或二次,便會觸發事件處理程序。今天把MSA301的功能轉換為積木的方式,讓有這個感測器的朋友可以直接使用這個積木,不管你的MSA301是外接的模組,或是使用PocketCard Lite的朋友,都可以使用這些積木。這些積木因為使用到了一些特殊的函數,因此「吉哥積木」要先升級到20210623之後的版本才可以正常使用這些功能。
MSA301三軸感測器(上圖取自Adafruit官網)
PocketCard Lite(V3)版本,已內建MSA301感測器
在開發板初始化時,需要使用「MSA301 啟動加速度感應器,感應範圍2G」的積木,感應範圍的G值可以自行設定。
重複執行內需要先使用「MSA301 更新加速度感測資料」積木,才可以讀取到X、Y、Z三個軸的加速度感測值,單位是m/s^2(公尺/秒平方)。
也可以計算出俯仰及翻滾角度。俯仰角度(pitch),以X軸為軸心,往前旋轉,俯仰角度是負數,往後旋轉是正數。翻滾角度(roll),以Y軸為軸心,向左傾斜,翻滾角度是負數,向右傾斜是正數。
以下的程式範例,MSA301被敲一下時,會在OLED上顯示「被敲了一下」;MSA301被敲二下時,會在OLED上顯示「被敲了二下」。
1.在開發板初始化時,先使用「MSA301 啟動加速度感應器,感應範圍2G」的積木,再使用「MSA301 啟動輕敲偵測」積木。
2.重複執行當中,先拉出一個「當MSA301 被輕敲」積木,再使用「如果....執行...」積木,將「MSA301 被輕敲1下」或「MSA301 被輕敲2下」的積木放進「如果....執行...」的判斷式中,便能夠偵測到MSA301是否在極短時間內被敲了一下或二下。
MSA301被敲一下時執行的畫面
MSA301被敲二下時執行的畫面