| ピン番号 | 名称 | 意味 |
| 1 | Vdd | 電源(Arduinoの5Vへ) |
| 2 | Enable | 動作モード(通常はArduinoの5Vへ) |
| 3 | GND | Ground(ArduinoのGNDへ) |
| 4 | Vmux | 未使用 |
| 5 | Self Test | セルフテスト(ArduinoのGNDへ) |
| 6 | Out X | X軸出力(Arduinoのアナログ入力へ) |
| 7 | Out Y | Y軸出力(Arduinoのアナログ入力へ) |
| 8 | Out Z | Z軸出力(Arduinoのアナログ入力へ) |
ピン番号は1から反時計回りで8までで、1, 4, 5, 8番のみ印字。1→4がX軸正方向、1→8がY軸正方向、下から上がZ軸正方向。出力は、Vddの5分の1が重力加速度に対応。すなわち
加速度=9.8*(入力値-512)/204.8[m/s^2]
// アナログ入力ピン0,1,2の値をモニタするためのスケッチ
// IDEのツール→シリアルモニタで数値を表示
const int Px = 0; // 入力ピン番号
const int Py = 1; // 入力ピン番号
const int Pz = 2; // 入力ピン番号
const int Delay = 100; // データ入力時間間隔(ミリ秒)
void setup() {
// Arduinoとコンピュータの間の通信を準備
// データ通信速度は9600ビット/秒
Serial.begin(9600);
}
void loop() {
String xyz = "(";
float ax = (analogRead( Px )-512)*9.8/204.8;
float ay = (analogRead( Py )-512)*9.8/204.8;
float az = (analogRead( Pz )-512)*9.8/204.8;
// 入力ピンから読み取って、
xyz = String("(") + ax + ", " + ay + ", " + az + ")" ;
// コンピュータへ送信
Serial.println( xyz );
// 時間間隔だけ待つ
delay( Delay );
}
I2Cアドレス 0x1C / 0x1D
| ピン | 意味 |
| Vin | 電源(Arduinoの5Vへ) |
| GND | Ground(ArduinoのGNDへ) |
| 3Vo | 3V出力 |
| I2 | 割り込み2 |
| I1 | 割り込み1 |
| SCL | I2Cクロック(ArduinoのA5へ) |
| SDA | I2Cデータ(ArduinoのA4へ) |
| A | 3Voに接続→I2Cアドレスを0x1Cから0x1Dに変更 |
#include <Wire.h> #include <Adafruit_MMA8451.h> #include <Adafruit_Sensor.h>
Adafruit_MMA8451 mma = Adafruit_MMA8451();
mma.begin(0x1c); mma.setRange(MMA8451_RANGE_2_G);
mma.read()でデータを取得する。mma.x, mma.y, mma.zに3軸方向の加速度が入っている。値の範囲は-8096から+8095で、測定範囲の±2G、±4G、±8Gに対応する。人間がわかりやすいデータを得るには、次を実行する。
sensors_event_t event; mma.getEvent(&event);event.acceleration.xなどで、加速度の値をm/s^2単位で得ることができる。