ピン番号 | 名称 | 意味 |
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単位で得ることができる。