ゲイテッドレーザーサイト その2 (動作状態遷移) [PIC]
deli氏により、とってもナイスな提案をしていただいたが、部品代が上がってしまうので、今回はパスをさせていただくことにした。実際に作るところまで行ってどうしてもほかに手がなかったら、それも含めて再検討するかもしれない。
3軸加速度センサからのデータを、銃身方向の回転、銃身に水平方向の回転を検出し、ある程度の範囲に来たときに、すべての動作を許容する事になるが、今回使用予定のコンピュータは、8pinの格安仕様で、メモリ容量が少ないので、難しいかなと判断したためである。
18F14k50 位のサイズが使えれば、もう少しいけると思うんだけど。
今回のお題は、なるべく小さく作らないといけないので、サイズも結構重要。
ということで、今回使用するコンピュータは、PIC12F683というもの。初めて使うものなので、うまく動かせるかどうかも不明ではあるが。
それでは、話を戻そう。
昨日、提示した状態遷移を表に起こすと以下のようになる。
ここで、横軸は、状態、縦軸はそのとき入力された信号を示し、それぞれ、
状態遷移型プログラムとして、上記を記述するといいことになる。
stGuardとstGateは良く見ると時間だけが異なるだけで、タイマー以外のイベントをすべて無視するという動作は同じなので、状態によりタイマー値を変更することも可能であるが、プログラムの構造を簡単にするために、別々の状態として考えることにしよう。
3軸加速度センサからのデータを、銃身方向の回転、銃身に水平方向の回転を検出し、ある程度の範囲に来たときに、すべての動作を許容する事になるが、今回使用予定のコンピュータは、8pinの格安仕様で、メモリ容量が少ないので、難しいかなと判断したためである。
18F14k50 位のサイズが使えれば、もう少しいけると思うんだけど。
今回のお題は、なるべく小さく作らないといけないので、サイズも結構重要。
ということで、今回使用するコンピュータは、PIC12F683というもの。初めて使うものなので、うまく動かせるかどうかも不明ではあるが。
それでは、話を戻そう。
昨日、提示した状態遷移を表に起こすと以下のようになる。
ここで、横軸は、状態、縦軸はそのとき入力された信号を示し、それぞれ、
名前 | 意味 | 動作 |
stIdle | アイドル状態。すべての処理の基底状態 | 音声入力があるまで待機する |
stGate | ゲート状態。レーザを発光させた状態 | レーザを発光させ、フォロースルータイマを開始する |
stGuard | ガード状態。レーザ消灯後、すべてのイベントから動作を保護する | レーザを消灯させ、ガードタイマ満了を待ち、ガードタイマ満了を持って、アイドル状態に移行する |
stCancel | 検出禁止状態 | すべての動作をキャンセルタイマ満了するまで無視する。 |
evSound | 音声入力 | 検出された音声。アイドル状態では、ゲート状態に移行し、ゲート状態では、検出禁止状態に移行する |
evGate | フォローする時間満了 | レーザを発光を停止し、ガード状態に移行する |
evGuard | ガード時間満了 | ゲート時間中に音声を検出したときは、しばらく のイベント検出を無効化するガード状態が満了したことを示す。アイドル状態に移行する |
状態遷移型プログラムとして、上記を記述するといいことになる。
stGuardとstGateは良く見ると時間だけが異なるだけで、タイマー以外のイベントをすべて無視するという動作は同じなので、状態によりタイマー値を変更することも可能であるが、プログラムの構造を簡単にするために、別々の状態として考えることにしよう。
コメント 0