2011年4月25日月曜日

Arduino シリアル通信

Arduino はシリアル通信も簡単に扱えます。Arduino Uno には、ボード上に USB Serial 変換用のIC (ATMega8U2 のソフトウェアでの実装) が付いており、Mac とはUSB で接続します。
既に行っている、IDE での書き込みと全く同じです。

残念なことに、Mac はシリアル通信と相性が悪く、良いTerminal ソフトがありません。(Recotana さんのUARTcom と松田さんのSeriette に期待しているのですが、どちらも公開されていないようです。)

しかたがないので、IDE 付属のシリアルモニターを紹介します。

Arduino IDE のツールバー一番右端のボタンが Serial Monitor です。
(使用するポートは書き込みに使うポートと同じです。)
簡単な通信パラメータの設定と、文字列の送信ができます。



Arduino のサンプルコードと通信してみましょう。

File > Examples > 4.Communication > SerialCallResponseAscii

Arduino に書き込んだら、シリアルモニターを開きます。

最初はArduino から0, 0, 0 が送られてきます。
こちらから何でもいいので文字を送ると、ポートa0, a1, d2 の状態を返してきます。
(ここでは文字 a を送信)

同じような名前のサンプル

File > Examples > 4.Communication > SerialCallResponse



こちらは、値をByte のまま送っています。文字化けしたような状態になりますが、こちらの方が少ないバイト数で送れ、受信プログラムも簡単なので、こちらの方が一般的です。

また、これらのサンプルの下の方には、コメントアウトされた状態でProcessing 用とMax/MSP version 5 用の受信プログラムも書かれています。
それぞれ、コピー&ペーストするなどして、使用します。
Processing は Java ベースでグラフィックに強い、フリーのプログラム開発環境です。IDE は Arduino に非常に良く似ています。
Processing 用のサンプルを実行するとこのような画面になります。

Serial Call Response


Serial Call Response Ascii






送られたデータの a0 がX 座標、a1 がY 座標、d2 が描画色(白か黒)に対応しています。

同じシリアルポートを複数のプログラムから同時に開くことはできないため、Processing のプログラムを動かす前に、Arduino IDE のシリアルモニターを閉じて下さい。

また、Arduino IDE のシリアルモニターは同時に複数のポートを扱えません。Aruduino を複数台扱う時など、複数のシリアルポートを同時に開きたい場合は、Arduino IDE を別の場所にコピーし、複数起動すれば使えるようです。


0 件のコメント:

コメントを投稿