ArduinoでMIDI制御を行うために、Studio GyokimaeさんのMidioutオブジェクトを使うのは良いのだけれど、midiを使うとデバッグ用のシリアル出力が使えない。もちろんSoftWareSerialを使えばいいんだけど、外部でシリアルが取得できる環境を用意する必要が無い分、Serialオブジェクトの方が使い勝手が良いんだよね。 そんなわけで、ソース改変を最小限に抑えてMidi/Serialを切り替えられる様、クラスをいっこ書いてみた。これでトライ/エラーが多少やりやすくなるハズ。 どうせクラスを作るなら、ライブラリとして使用出来るようにコーディングしてみた。 1.コーディング コーディングはC++やったことある人なら簡単。[クラス名].hと[クラス名].cppを作ればOK。ファイル名とクラス名を合わせる必要は無いかも知れないけど、とりあえず未検証。 注意が要るのは、ライブラリ内でSerialオブジェクトとかの、既存ライブラリを使用する場合。通常スケッチでSerialオブジェクトを使う時は、何も考えずに「Serial.print()」とかやればいいんだけど、ライブラリではオブジェクトが見つからないっていう事態になる。 こんなかんじのエラーが出る これを回避するには、そのオブジェクトが定義されているヘッダを読み込むこと。例えばSerialであれば「HardwareSerial.h」っていうヘッダを読み込めばOK。普段使っているライブラリのヘッダは「[Arduinoディレクトリ]/hardware/cores/arduino」にあるから、ここで検索すれば、どのヘッダを読み込めばいいか解るはず(ディレクトリは/を円マークに読み替えてください)。 >(2010/7/10)ディレクトリ変わっていますね > 「[Arduinoディレクトリ]/hardware/arduino/cores/arduino」 2.ライブラリディレクトリにコピー 完成したライブラリは、同名のディレクトリに入れて(これも他で試してないけど、多分必要)準備完了です。 3.ArduinoIDEを起動してコンパイル ArduinoIDEを起動すると勝手にライブラリをコンパイルしてくれます。コンパイルエラーが出た場合は、*.cppないし*.hを修正後コンパイル(ctrl+r)。 一回コンパイルが成功したら、ディレクトリに*.oができて、以降コンパイルしてくれない様なので、このファイルを消してから、再度コンパイルして下さい。 本当は個別にコンパイルが出来るとありがたいんだけどねー。 ツイート Recent Entries from Same Category
|
コメント
|