この記事では、Processingからシリアル通信でArduinoを操作し、LED点滅を行う方法をソースコード付きで解説します。
ProcessingでLED点灯制御
rocessingでは、「processing.serial」というライブラリを使うことで簡単にシリアル通信を行うことが出来ます。
今回は、ProcessingでのマウスクリックでLEDの点滅を制御するプログラムを作成しました。
回路構成(配線図)
Arduinoと電子部品の構成・配線は下記の通りです。
Arduinoの13番ピンを用いて、LEDを点灯させます。
LEDに流れる電流を定格内に抑えるために、LEDとGNDの間に150Ω程度の抵抗を入れてやる必要があります。
(※LEDをさす際はアノードとカソードの向きに注意)
【電子部品】
・Arduino UNO (1個)
・RCサーボ S03R 2BBMG (1個)
・赤外線測距モジュール GP2Y0A21 (1個)
・ジャンパワイヤー(数本)
処理手順
実装したプログラムの処理手順は下記の通りです。
【Arduino側】
①シリアルポートを9600 bps[ビット/秒]で初期化する。
②シリアル通信でPCから送られてくる数値を受信する。
③送られてきた数値が1なら13番ピンに繋いでいるLEDを点灯させる。
④送られてきた数値が1以外なら13番ピンのLEDを消灯させる。
【Python側】
①シリアル通信の設定をする。(COMポート5番、通信速度9600 bps)
②画面サイズを設定する。(縦・横400px)
③画面を黒に塗りつぶす。
④マウスクリックがあれば、画面を赤色に塗りつぶし、シリアル通信で数値1(LED点灯の合図)を送る。
⑤マウスクリックが終われば、画面を黒色に塗りつぶし、シリアル通信で数値0(LED消灯の合図)を送る。
ソースコード
サンプルプログラムのソースコードは下記の通りです。
【Arduino側】
Processing(PC側)から受信した文字列をそのまま送り返すプログラムです。
最大30文字(終端文字コード除く)まで文字列を受信できます。(1行目のdataの配列数を変更すれば最大文字数を増やせます)
【パソコン側(Processing)】
シリアル通信でArduinoに「0」「1」を送るプログラムです。
※環境によってArduinoが接続されているCOMポートの番号が違うので,それに応じて9行目のポート番号を変更してください。
(私の環境では、COM5にArduinoが繋がっていたので、COM5と指定しています。どこに繋がっているかはArduinoIDEで確認できます。)。
実行結果
サンプルプログラムの実行結果は下記の通りです。
Processing側のプログラムを起動すると黒い画面が出てきます。
その後に画面をマウスでクリックすると、画面が赤くなり、LEDも点灯します。
クリックが終わると、画面が黒くなり、LEDも消灯します。
【関連記事】
・Arduino入門 基本的な使い方
・Python入門 基本文法
コメント