MMA7361LCは、フリースケール製の3軸の加速度センサです。電源電圧範囲は 2.2[V]〜3.6[V]です。3.3[V]動作のArduinoの場合には電源を共通にして使うことが出来ます。 ここでは、 ストロベリーリナックスのセンサモジュールを利用しています。 モジュールのピン配置は次のようになっています。
ピン番号 | 名称 |
1 | X-OUT |
2 | Y-OUT |
3 | Z-OUT |
4 | GND |
5 | VDD |
6 | ~SLEEP |
7 | 0G検出 |
8 | G-SEL(L:±1.5G, H:±6G) |
以下のスケッチは読んだ値(そのままの値と単位を[G]に変換した値)をシリアルへ出力します。 Arduinoの電源が5[V]のとき(MMA7361LCは3.3[V])はAREFを5.0、OFFSETを307にします。 8ピンを3.3[V]につないだときには、SENSを0.206にします。 実際に使うにはセンサの傾きをキャンセルするため、setup関数で読んだ値を 基準(オフセット)にするとよいでしょう。
const float AREF = 3.3; /* 電源が5[V]のときは 5.0 */ const float SENS = 0.800; /* ±6G のときは 0.206 */ const int OFFSET = 512; /* 電源が5[V]のときは 307 */ void setup() { Serial.begin(9600); while (!Serial) {} } void loop() { int X, Y, Z; float x, y, z; X = analogRead(A0); Y = analogRead(A1); Z = analogRead(A2); x = (X-OFFSET); y = (Y-OFFSET); z = (Z-OFFSET); x = x / 1024.0 * AREF / SENS; y = y / 1024.0 * AREF / SENS; z = z / 1024.0 * AREF / SENS; Serial.print(X); Serial.print(" "); Serial.print(Y); Serial.print(" "); Serial.print(Z); Serial.print(" "); Serial.print(x); Serial.print(" "); Serial.print(y); Serial.print(" "); Serial.println(z); delay(100); }