迷路自動生成の作成
残るは、迷路自動生成を作成しました。
アルゴリズムは、PCで確認していたので、苦労したのは実装です。C言語で作ったので、PICのプログラムメモリの制約から、いまではあまり気にしなくなった細かい細工を行いました。結果、残り5ワードで何とか完成。
- 2のn乗定数による掛け算、割り算をシフト演算へ
- サブルーチンコールをインライン展開(ネストの削減)
- int型からchar型へ
- 演算順序工夫し、PICページ切替を削減(一部)
- 条件判断式(==true)を削除
その他、細かい工夫も実施。裏面のスイッチを押さなくても良いようにするのと、インテリア小物としても使えるように、置いておけば自動にタイトル表示→迷路生成→迷路解答表示がループするようにタイムアウト処理も追加しました。全体の作動シーケンス図は、次の様になってます。
完成
見た目は、殆ど変わりませんが、一応、動作状況はこんな感じです。
Simple MAZE by 8X8 MATRIX LED #3
最後に
最後に、消費電流を測ってみましたが、10~20mA(これだと、LED駆動用のトランジスタは不要でした)というとこで、単5電池の容量を650mAHとすると、約43時間は動くことになります。
自動パワーダウン機能を付けたいところですが、プログラム容量的に厳しいです。プログラムの最適化ができたら付けます。あと、移動中表示のときに、移動先の壁が表示されない点についても改善を考えたいですが、これもプログラム容量が削減できたら考えます。