迷路プレイの作成
始めに考えなければいけないのが、進む方向をどうやって入力するか。
裏目にスイッチ1個は実装しているので、それを使ってサイクリックに上下左右を決めて、それから進といった方法も考えられますが、超面倒くさいインターフェースです。
PICに残っているIOは、1chのみ。これをどう使うか考えた挙句、4方向のチルトスイッチを秋月で見つけ、何とかこれを使うことにしました。
中にボールがあり、LEDと2つのフォトトランジスタで、4方向のどっちに傾いたかを2bitで出力します。ただ、PIC の残り入力が1chなので、ここのままでは使えないですが、そこで、一工夫。2Bit出力をラダー型DAコンバータを使ってアナログ電圧に変換し、それをPICのADで読み取る方式です。これなら、1chで出来ます。
カタログには、3.0Vで使用可とありますが、出力の電圧特性について何も書いていないので、ラダーを組んだとき、実際何V出るかをブレッドボードを使って測定しました。
結果、次の様になりました。チルトセンサの裏をみると22Kの抵抗が負荷としてあったり、出力抵抗の影響でそうなると思いますが、現物合わせでAD変換値を判別することにします。Voutは各OUTが3Vの時の計算値ですが、実測値は低いです。
(注:ラダーの抵抗値は、最終的に22K、10Kに変更)
チルトスイッチの実装
スイッチの大きさは、1.07×0.81×1.24cmと小さなものですが、これを本体に組み込むのは、至難の業です。
電池側の基板にはめ込んで、空中配線で行くことにしました。
センサの向きも考える必要があります。LED面に迷路が表示されている状態を上にして、傾けた方向に進むとした場合、LED面にセンサの上面をもってきて、かつ、Cの向きになるようにセンサを配置する必要があります。(写真のセンサの位置は、逆で撮ってしまいました)
PICが乗っている基板とのクリアランスはほぼゼロ(写真赤丸)ですが、なんとか仮組みできました。一応、センサ面の上面と基板間を絶縁するための処理と、隙間調整用のワッシャーが飛び出ているのでこれを対処が必要。アクリルケースにもかろうじて収まりそうです。
本体完成
最終的に、ナットを1枚追加してスペースを稼ぎました。チルトセンサの隙間もできたので絶縁処置は不要に。アクリルケースにもちゃんと入りました。これで、ハードとしては完成です。(しっぽが出ているのは、チルトセンサのラダー出力です)
チルトセンサのキャリブレーション
あと、チルトセンサの判定閾値をチューニングをします。4方向に傾けた時の、ラダー形DAの出力を実測し、その各々の中間値を判定閾値にすることにしました。
FWD (上面が下(180度回転)) RT (右側目が下)
LT (左側面が下) AFT (下面が下)
閾値を設定して、迷路探索(プレイ)機能n完成です。
仮の閾値のときは、多少チルトセンサのボールば引っかかるみたいで反応しないときもありますが、ほとんど気にならなくなりました。ただし、チルトセンサの仕様で30°以上傾けないと反応しないので、かなり傾けた感じになってます。
Simple MAZE by 8X8 MATRIX LED #2
残るは、迷路自動生成です。
つづく。