日本語が、大好きです。(Sorry, Japanese Only.)
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30    
<< 2025 April >>

no fun nolife
NEW ENTRIES
RECENT COMMENTS
CATEGORIES
rss
 はてなアンテナに追加
 はてなRSSに登録
 Bloglinesで閲読登録
 Subscribe with livedoor Reader
 Add to Google
 My Yahoo!に追加
LINK
ARCHIVES
music
LOGIN
現在のモード: ゲストモード
USER ID:
PASS:
logout

 ArduinoでMIDI制御を行うために、Studio GyokimaeさんMidioutオブジェクトを使うのは良いのだけれど、midiを使うとデバッグ用のシリアル出力が使えない。もちろんSoftWareSerialを使えばいいんだけど、外部でシリアルが取得できる環境を用意する必要が無い分、Serialオブジェクトの方が使い勝手が良いんだよね。

 そんなわけで、ソース改変を最小限に抑えてMidi/Serialを切り替えられる様、クラスをいっこ書いてみた。これでトライ/エラーが多少やりやすくなるハズ。

 どうせクラスを作るなら、ライブラリとして使用出来るようにコーディングしてみた。



1.コーディング
 コーディングはC++やったことある人なら簡単。[クラス名].hと[クラス名].cppを作ればOK。ファイル名とクラス名を合わせる必要は無いかも知れないけど、とりあえず未検証。

 注意が要るのは、ライブラリ内でSerialオブジェクトとかの、既存ライブラリを使用する場合。通常スケッチでSerialオブジェクトを使う時は、何も考えずに「Serial.print()」とかやればいいんだけど、ライブラリではオブジェクトが見つからないっていう事態になる。

GMidioutDummy.cpp: In member function 'void GMidioutDummy::noteOn(unsigned char, unsigned char, unsigned char)':
GMidioutDummy.cpp:31: error: 'Serial' was not declared in this scope

こんなかんじのエラーが出る

 これを回避するには、そのオブジェクトが定義されているヘッダを読み込むこと。例えば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









    
処理時間 1.322875秒