next up previous contents
: 結果 : マイコンプログラム : 条件分岐のプログラム   目次

動作確認

Squeak上からシリアルポート通信を行うモーフ、serial5.morphがあったので、それを一度に2byte分のデータを送受信するserial2b.morphに作り直し、これを用いて動作確認を行った。モーフのビューワを開き、空スクリプトを出す。空スクリプトにデータ送信を行うタイルをドラッグ・アンド・ドロップする。通信プロトコルに基いて、行いたい制御に応じるコマンドを入力し、実行する。数値の入力は10進数よりも16進数が分かり易い。16進数の数値を入力するには、先頭に「16r」を付加する(Enter入力後に10進数に自動的に修正される)。全てのコマンドに対して動作確認を行ったが、表6.10をバッチ番号5に登録して実行することを例に説明する。

命令数は全部で8つであるので、ターミネータを含めて必要なページ数は$(8+1)\div2$を切り上げて5である。よってバッチの登録開始コマンドは $(1000 0101 0000 0101)_{2}=(8505)_{16}=34053$となる。登録開始コマンドを送信した後、シリアルポートからデータを受信し、それがこれから登録するバッチ番号と等しければ、表6.10のそれぞれのコマンドを送信する命令の間にwaitコマンド(モーフに対する命令であり、Squeakが送信を停止する)を挿んだものを実行する命令セットを作った。それが図7.5である。このスクリプトを左上の「!」と書かれたボタンを押す事により一回実行すると、マイコンにバッチが書き込まれる。その後、白地に黒色のラインが描かれたライントレース用の紙の上にレスクロを置き、バッチ5を実行するコマンド $(1001 0001 0000 0101)_{2}=(9105)_{16}=37125$を実行した。D/A出力の動作確認は、出力端子に導線を繋ぎ、テスターで出力値を見ることで行った。

図 7.5:6.10のコマンド例を用いて動作確認を行うスクリプト
\includegraphics[scale=1.0]{images/miconTest.eps}

結果、レスクロは紙の白い部分では前進し、黒のライン上に乗ると少しの間後進した。しかし、ラインを通り過ぎる事もあった。これは、センサの入力を1秒間隔で行っているため、1秒の間にラインを踏み越えてしまい、ライン上に乗っていると判断されなかったためであると考えられる。また、後進を行っている間はD/A出力端子から電圧を検出することができた。電圧値は後進開始時に$0[V]$から約$5[V]$まで変化し、前進を開始すると$0[V]$に戻った。これはほぼ期待通りの動きであるといえる。



Deguchi Lab. 平成20年3月5日