『ArduinoとProcessingでジャイロ・加速度センサMPU6050デモンストレーション』を実行してみるページ。
Lチカ、グラフプロット、アナログ+日付・温度付きデジタル時計に続くArduinoとProcessing連携第4弾。
今回は、Arduino - MPU6050 GY521 - 6 Axis Accelerometer + Gyro (3D Simulation With Processing)の通りに、そのまま利用させて頂きました。
尚、このスケッチ群、当初、Arduino Project Hubで見つけけたのですが、うまくいかず、続いて今回、試したリンク先(instructables.com)に沿ってやってみたところ、微妙な点は残るも一応、シミュレーションまではできたという経緯があります。
スケッチは、リンク先を参照、実行、停止、留意点は後述するとして回路として必要になるハードウェアは、ArduinoボードとMPU-6050 6軸(3軸ジャイロスコープ・3軸加速度)センサを各1個とジャンパワイヤ5本だけ。(もちろん、USBケーブルとPC、Arduino IDEもしくは代替も要るけど。)
必要なソフトウェアは、Arduino IDEか代替とProcessing。
リンク先の解説にある通り、コメントする箇所とコメントを外す箇所を修正したスケッチを[名前を付けて保存]し、それをArduinoボードに(再)アップロードしておきます。
シミュレーションを実行するには、Processingを起動するなりして、そのままならArduinoのlibrariesディレクトリ内の[MPU6050] => [MPU6050_DMP6] => [Processing] => [MPUTeapot] => MPUTeapot.pdeを開き、スタートボタンをクリック。
その後、10秒程度、待ち、模型飛行機の絵が動きはじめたら、MPU6050を任意に動かすと映像にも反映されます。
Arduino Project Hubとinstructables.comで気づいた違いは、読み違いや勘違いでなければ、前者のアーカイブファイルは1つにまとまっていましたが、後者は2つ個別にダウンロード・展開したこと。
これに伴い、I2CdevとMPU6050のスケッチダウンロード元が異なり、後者では、これら2つのフォルダをArduinoのlibrariesディレクトリにコピーすると明示されていたこと、ToxicLibsライブラリのダウンロード元が異なり、後者では、このライブラリの展開先が、Processingの探索パス内の[modes => java => libraries]ディレクトリ(なければ作成)と明示されていたこと。
あと、前者でダウンロードしたものは、なぜか、ファイルの解凍・展開にやたらと時間がかかり、最終的に展開し終わっている模様もエラーになったアーカイブファイルがありました。
尚、少なくともProcessing 3では、ダウンロード、指定場所に展開したToxicLibsライブラリは、Processing IDEの[スケッチ] => [ライブラリをインポート] => [ライブラリを追加]で表示されるポップアップの[Libraries]タブで当該行を選択、[↓ Install]ボタンで追加できました。
冒頭書いた微妙な点というのは、2点あって、1つは、途中でデモがフリーズして止まってしまうこと、もう1つは、Arduino側のデータ型か、Processing側のフォント設定の問題なのか、Processingの下部ウィンドウに表示されるシリアル通信で受信した値が、文字化けしていること。
ただ、途中でデモが止まってしまうのは、自身が、手抜きでMPU-6050にピンヘッダのはんだ付けをしておらず、接触が悪かったせいかもしれません。
ちなみに、これも接触不良か、なぜか、スケッチ編集前のArduinoのシリアルモニタ上では、数行表示され、何かタイプしろと書いてはありますが、MPU-6050の接続エラーを示すメッセージも含まれており、うまく機能しませんでした(そもそも、どうなるのが正解なのかよくわかりませんでした)。