これまでの記事では、①とにかくデータを出す、②最低限データを出力するということをやってきました。
この調子で自前構築で一通りの処理が出来るようになればいいのですが、6軸値を元に「姿勢を出す」や「姿勢を3DCGで出力する」というところまでやろうとすると、かなりの手間と知識が必要になります。
ライブラリを使用すれば、自前でコードを書かなくても簡単に・正確にデータ取得・表示が可能になります。
今回は、有名どころなI2Cdevというライブラリを活用してデータを取得し、更にProcessingに3Dモデル表示をするところまでをやっていきたいと思います。
Contents
■Arduino用ライブラリの設定とサンプルスケッチ動作
ライブラリの取得
ArduinoでMPU6050のデータ取得するうえで有名なのはI2CDEVです。
I2Cデータ処理・MPU6050からのデータ取得・Processingのサンプルと一通りそろっています。
↓にアクセスして、「Dowonload zip」で一式をダウンロードしますhttps://github.com/jrowberg/i2cdevlib
ライブラリのインストール
ダウンロードしたら解凍して、「i2cdevlib-master\Arduino\I2Cdev」と「\i2cdevlib-master\Arduino\MPU6050」をArduinoのライブラリ用フォルダ(変更していなければユーザーディレクトリ下の「\Documents\Arduino\libraries」)にコピーします。

サンプルプログラムの実行
MPU6050_DMP6を起動します。
一括ダウンロードした場合、以下のフォルダに格納されています。

実行するとこのようにデータが出ます

Teapod demoの出力
デモスケッチの取得
teapod demoを動かしてみましょう。Teapod demは、Processngで作られていて、3Dデモを動かすことができます。
以下のフォルダの、Processingフォルダ内に入っている「MPUTeapot」というProcessing用のスケッチを実行します。

MPU6050_DMP6の内容変更
MPU6050_DMP6内の、プログラムを一部変更します。以下の5個の定義をコメントアウトで切り替えることで、5種類のデータ形式で出力することが可能です。
今回は、「OUTPUT_TEAPOT」を有効にし、ほかをすべてコメントアウトします。
#define OUTPUT_READABLE_QUATERNION
#define OUTPUT_READABLE_EULER
#define OUTPUT_READABLE_YAWPITCHROLL
#define OUTPUT_READABLE_REALACCEL
#define OUTPUT_TEAPOT
実行する
MPU6050_DMP6をArduinoに書き込み、その後MPUTeapotをProcessingで実行すると、下の様に動かすことができます
はまったポイント
参考に残します
「i2cdevlib-master」をDLした後、そのままファイルをZIP形式のインクルード機能で入れたら、「MPU6050」が入らず(i2cdevのみインストールされる)エラーになった
「i2cdevlib-master」の中に「MPU6050」が入っていることに気づかず、ネットで別途「MPU6050」を探して入れたら、バージョンが違ったためエラーになった