傾斜計で使用しているMPU-9250用サンプルコード。
https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/examples/MPU6050_DMP6/MPU6050_DMP6.ino
上記の中の処理を見ている。
setup(), loop()内で、Quaternionを取得してEuler角を取得するまでの処理で使っている関数は以下に切り出した。
いくつか気になった関数について動作の推測は以下。
- getIntStatus()
- 0x10 : overflow
- 0x02 : 正常?
- getFIFOCount()
- 通信に使うFIFOのサイズを取得
- この戻り値が dmpGetFIFOPacketSize()になるまでwaitをかける
- getFIFOBytes(fifoBuffer, packetSize)
- fifoBufferへの読込み
get関数に戻り値を返す関数と、引数のポインタへ値をセットする関数の2種類がある。