EASY84シリーズその6「プロジェクト・アームジョー」(PICソフト編)(2003)
EASY84シリーズとは、PIC16F84を使って簡単な電子工作を楽しもうという企画である。
今回は、「プロジェクト・アームジョー」(ハード編)のつづきで、PICソ
フト編である。
(というか単なるつづきの内容になってしまいました。)
アームジョーには、
1.待ち受けモード
2.データ転送モード
3.オート動作モード
の3つの動作モードがある。
1.待ち受けモード
電源ONの後、このモードとなり、コンピュータからのコマンドを待つ。
コンピュータからのコマンドとデータ値の対応は次のようである。
データ値 |
D3 |
D2 |
D1 |
D0 |
コマンド |
0 |
0 |
0 |
0 |
0 |
全停止 |
1 |
0 |
0 |
0 |
1 |
モータ1正回転開始 |
2 |
0 |
0 |
1 |
0 |
モータ2正回転開始 |
3 |
0 |
0 |
1 |
1 |
モータ3正回転開始 |
4 |
0 |
1 |
0 |
0 |
モータ4正回転開始 |
5 |
0 |
1 |
0 |
1 |
モータ5正回転開始 |
6 |
0 |
1 |
1 |
0 |
転送開始 |
9 |
1 |
0 |
0 |
1 |
モータ1逆回転開始 |
10 |
1 |
0 |
1 |
0 |
モータ2逆回転開始 |
11 |
1 |
0 |
1 |
1 |
モータ3逆回転開始 |
12 |
1 |
1 |
0 |
0 |
モータ4逆回転開始 |
13 |
1 |
1 |
0 |
1 |
モータ5逆回転開始 |
D2〜D0がモータ番号を表し、D3が回転方向を表すようになっている。
ハード編では11通り区別できればよいといったが、転送開始コマンド追加で12通りである。
例えばコンピュータからアームジョーにデータ値3が送信されると、アームジョーは、モータ3の正回転を開始するといった具合である。
2.データ転送モード
待ち受けモードで、転送開始コマンド(データ値6)を受信すると、アームジョーはデータ転送モードに変化する。

データ転送モードになると、アームジョーは、コンピュータから送信されるデータは、コマンドデータではなくシーケンスデータとみなして、メモリに保存する
動作をする。

送信終了データを受信すると、待ち受けモードにもどる。

3.オート動作モード
オート動作スタートボタンが押されると、オート動作モードになり、メモリに保存された
シーケンスデータを解釈し自動で動作する。終了後、待ち受けモードにもどる。

シーケンスデータの保存フォーマット
オート動作に必要なシーケンスデータは、どのモータを、どちら向きに、どれくらい(動作時間)動かすかの情報が必要である。
これらの情報をまとめて、1バイト(8ビット)の中に次のように格納することにする。
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
向き |
モータ指定
または終了コード |
動作時間 |
0=正
1=逆 |
001〜101=モータ番号
111=終了コード |
0000〜1111
(0.5秒単位) |
なお、データ転送時には、コンピュータからは一度に4ビットしか送信できないので、上位と下位の4ビットずつに分けて転送する。
LED表示
モードが外から見てわかるように、本体LEDの表示をモードによって変えるようにする。
モード |
LED表示 |
待ち受けモード |
消灯 |
データ転送モード |
点灯 |
オート動作モード |
点滅 |
PICのプログラム
PICのプログラムもモードにより3部構成になっている。おおまかな動作を説明しよう。
まず待ち受けモードでスタートする。
・待ち受けモード
@待ち受けモードでは、データ受信とオート動作スタートボタン入力を監視する。
Aデータ受信があれば、データ値により上記待ち受けモード時の表に従った動作をする。
データ値6の場合は、データ転送モードに移行する。
Bオート動作スタートボタンが押されたら、オート動作モードに移行する。
C最初にもどる。
・データ転送モード
@データ受信を待つ。
A2データ受信したら1つにしてEEPROMに書きこむ。
Bデータ値を調べ、終了コードであれば、待ち受けモードにもどる。
C最初にもどる。
・オート動作モード
@EEPROMからデータを読む。
Aデータ値を元にモータを動作させ、またタイマをセットする。
または、データ値が終了コードであれば、待ち受けモードにもどる。
Bタイマが0になったら、最初にもどる。
・タイマ処理
タイマ割り込み処理では、データ受信、LED点灯、オート動作モードのタイマ減算を行っている。
細かいことを言うと、実際の動作とは異なる部分はあるが、ざっとこんなところである。
次回PCソフト編へつづく。(えっ!まだ終わりじゃないの? はい。)