Baumkuchen’s Workshop

バイオリンと電子工作、DIY、ジョギングなど。

MATRIX LED表示器 改善(簡易迷路#3:完成)

迷路自動生成の作成

 残るは、迷路自動生成を作成しました。

アルゴリズムは、PCで確認していたので、苦労したのは実装です。C言語で作ったので、PICのプログラムメモリの制約から、いまではあまり気にしなくなった細かい細工を行いました。結果、残り5ワードで何とか完成。

  • 2のn乗定数による掛け算、割り算をシフト演算へ
  • サブルーチンコールをインライン展開(ネストの削減)
  • int型からchar型へ
  • 演算順序工夫し、PICページ切替を削減(一部)
  • 条件判断式(==true)を削除

その他、細かい工夫も実施。裏面のスイッチを押さなくても良いようにするのと、インテリア小物としても使えるように、置いておけば自動にタイトル表示→迷路生成→迷路解答表示がループするようにタイムアウト処理も追加しました。全体の作動シーケンス図は、次の様になってます。

f:id:Baum_kuchen:20200506133114p:plain

完成

見た目は、殆ど変わりませんが、一応、動作状況はこんな感じです。

f:id:Baum_kuchen:20200506141126j:plain


Simple MAZE by 8X8 MATRIX LED #3

最後に

最後に、消費電流を測ってみましたが、10~20mA(これだと、LED駆動用のトランジスタは不要でした)というとこで、単5電池の容量を650mAHとすると、約43時間は動くことになります。

自動パワーダウン機能を付けたいところですが、プログラム容量的に厳しいです。プログラムの最適化ができたら付けます。あと、移動中表示のときに、移動先の壁が表示されない点についても改善を考えたいですが、これもプログラム容量が削減できたら考えます。