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);
}