【Processing/Arduino】シリアル通信で文字列の送受信

ProcessingとArduinoの間でシリアル通信を用いて文字列を送信・受信する方法をソースコード付きで解説します。

スポンサーリンク

Processing-Arduino間で文字列の送受信

Processingでは、「processing.serial」というライブラリを使うことで簡単にシリアル通信を行うことが出来ます。
今回は、シリアル通信でProcessingからArduinoに文字列を送信し、さらにArduinoからProcessingへ受信した文字列を送り返すプログラムを作成しました。

回路構成(配線図)

Arduinoと電子部品の構成・配線は下記の通りです。

【電子部品】
・Arduino UNO (1個)
・RCサーボ S03R 2BBMG (1個)
・赤外線測距モジュール GP2Y0A21 (1個)
・ジャンパワイヤー(数本)

実装したプログラムの処理手順は下記の通りです。

【Arduino側】
①シリアルポートを9600 bps[ビット/秒]で初期化する。
②シリアル通信でProcessing(PC側)から送られてくる文字列を受信する。
(Serial.read()を使って、文字を終端コードが来るか30文字以上になるまで1文字ずつデータを受信して配列に格納します)
③受信した文字列をそのままProcessing(PC側)に送信する。

【Python側】
①シリアル通信の設定をする。(COMポート5番、通信速度9600 bps)
②画面サイズを設定する。(縦・横400px)
③画面を黒に塗りつぶす。
④マウスクリックがあれば、シリアル通信で「XYZ」+終端文字コード「\0」をArduinoへ送信する。
⑤マウスクリックが終われば、シリアル通信で「ABC」+終端文字コード「\0」をArduinoへ送信する。

ソースコード

サンプルプログラムのソースコードは下記の通りです。
【Arduino側】


Processing(PC側)から受信した文字列をそのまま送り返すプログラムです。
最大30文字(終端文字コード除く)まで文字列を受信できます。(1行目のdataの配列数を変更すれば最大文字数を増やせます)

【パソコン側(Processing)】


シリアル通信でArduinoに文字列「XYZ」もしくは「ABC」を送るプログラムです。
※環境によってArduinoが接続されているCOMポートの番号が違うので,それに応じて10行目のポート番号を変更してください。
(私の環境では、COM5にArduinoが繋がっていたので、COM5と指定しています。どこに繋がっているかはArduinoIDEで確認できます)

スポンサーリンク

実行結果

サンプルプログラムの実行結果は下記の通りです。


Processing側のプログラムを起動すると黒い画面が出てきます。
画面をマウスクリックすると、画面に「XYZ」という文字列が表示されます。
これにより、Processingから送信した文字列をArduinoがそのまま送り返してきてることがわかります。
同様に画面をマウスクリックを終了すると、画面に「ABC」という文字列が表示されます。

【Processing/Arduino】シリアル通信でLED点滅
この記事では、Processingからシリアル通信でArduinoを操作し、LED点滅を行う方法をソースコード付きで解説します。
【Arduino入門】サンプル集
このページでは、Arduinoで電子工作する方法やサンプルプログラム(ソースコード)を入門者向けに解説しています。
ArduinoProcessing
スポンサーリンク
西住工房

コメント

  1. 山内 たかし より:

    【Processing/Arduino】シリアル通信で文字列の送受信のソースコードについて

    現在Processingからの文字列送信で悩んでいるものです。検索よりこちらを見つけました。

    現在サンプルプログラムのソースコードが表示されていない状況です。
    【Arduino側】【パソコン側(Processing)】共同様です。

    支障がないようでしたら公開をお願いできないでしょうか