2015年10月04日

シリアル通信 -第3回:PCアプリで通信

今回はシリアル通信を使って、7セグメントLEDに数字を表示します。シリアル通信はArduino IDEのシリアルモニタで行わずに、Visual C#でシリアル通信用のWindowsアプリを作成して行います。

Oct03_シリアル通信アプリ_1.png
図1 作成物概要

ただし、C#については詳しくありませんので、アプリについては動作概要のみ説明します。


目次



1. シリアル通信アプリ

シリアル通信をするために以下のようなアプリを作りました。

Oct03_シリアル通信アプリ_2.png
図2 シリアル通信アプリ

  1. COMポートとボーレートを設定できる
  2. 「接続」をクリックするとシリアル通信を開始し、現在時刻を送信する
  3. 「切断」をクリックするとシリアル通信を終了する
  4. 状況をテキストに表示する

このアプリを使えば、パソコンの現在時刻をシリアル通信で送ることが出来ます。
時刻の表示形式は「時時分分」です。7セグメントLEDが4桁までの数字しか表示できないので、この形式にしました。

作成したプロジェクトとテキスト形式に変更したソースファイルを以下にアップロードしています。


2. Arduinoスケッチ

Arduinoは以下の動作を行っております。
  1. シリアル通信で4桁の時刻を受信する
  2. 受信した時刻を7セグメントLED表示用の形式へ変換する
  3. 変換した時刻を7セグメントLEDに表示する

今回新規で行うのは1番と2番です。3番は以前との7セグメントLED制御を流用しています。

1番について説明します。以前の記事では、Serial.avaiable()関数を使って受信したかどうかを確認しながら処理を行っていました。このときは1文字ずつ処理すればよかったので、確認することは受信したかどうかだけでした。
一方、今回は時刻を表示するために4桁ごとに受信しなければなりません。4桁ごとに受信できなければ、正しく「時時分分」の並びで表示することが出来ません。
今回のスケッチではSerial.avaiable()関数を使い、4文字受信したかどうかを確認しながら処理を行っています。

Oct03_シリアル通信アプリ_3.png
図3 4桁ごとの受信概要


2番について説明します。プログラミングの世界にはというものがあり、おおざっぱに言うと表示するための1(char型)と計算に使う1(int型)は別物ということです。
シリアル通信でやり取りした数字は表示用の数字、7セグメントLEDに表示する数字は計算用の数字です。ですので、シリアル通信で受信した数字を7セグメントLEDへ表示するには、数字を表示用(char型)から計算用(int型)へ変換する必要があります。
今回のスケッチではatoi()関数を使って変換を行いました。

Oct03_シリアル通信アプリ_4.png
図4 型変換の概要

作成したスケッチを以下にアップロードしています。(本来の拡張子は「.ino」ですが、「.txt」に書き換えています)
また、7セグメントLEDの制御方法は以前と同じですが、見やすいようにスケッチを書き換えています。(ダイナミック点灯の関数化、消灯処理の追加)


3. 動作

作成したアプリでArduinoを実際に動かしてみました。なお、表示時刻は見やすくするために「時時分分」から「分分秒秒」へ変更しています。
接続をクリックすると7セグメントLEDの表示が現在時刻になり、切断をクリックすると止まるのが分かると思います。

https://youtu.be/Vgt1OBG1QCU


これでパソコンのアプリとArduinoでシリアル通信を行うことができました。
次回はパソコンがArduinoからのデータを受信できるようにしてみたいと思います。


参考資料

  1. 著書名:金城俊哉. 書名:Visual C# 2013 パーフェクトマスター.  出版社:秀和システム, 出版年:2013
  2. 作者名:青柳 臣一. ".NET Framework 2.0 コア機能解説 〜 第 2 回 シリアルポートのサポート 〜". サイト名:Microsoft Developer Network. https://msdn.microsoft.com/ja-jp/library/cc825644.aspx, (参照日:2015-10-04)
  3. 作者名:金澤 宣明. "C#でシリアル通信を行う". サイト名:金澤ソフト設計. http://kana-soft.com/tech/sample_0007.htm, (参照日:2015-10-04)

Visual C# 2013逆引き大全555の極意 [ 増田智明 ]

価格:2,808円
(2015/10/4 14:37時点)
感想(0件)



posted by ました at 14:37| Comment(0) | TrackBack(0) | 電子工作の実践 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。