どうもhataです
前回ブログに書いていた、ロボットの必要な情報をLCDへ表示する機能の実装と、ロボットの暴走対策を行いました。
LCDには、LipoとNi-MHの電圧値・駆動輪モータドライバのエラー・ゲームパッドのボタンと十字キーの状態を表示できるようにしようと考えました。
最初はそれぞれの情報をスペースも改行も入れずに表示してしまったため、非常に見にくいものになってしまいました。改行とスペースの入れ方を仕様書で確認して実装したのですが、今度は電圧値の桁の変動によって、電圧値の横に表示している単位[V]がずれてしまい、[V]がいくつも表示されてしまいました。[V]の表示位置を固定して、桁の変動の影響を受けなくすることで解決しました。
LCDへの情報表示機能の実装が完了したので、ロボット全体の動作チェックを行っていたところ、ゲームパッドのレシーバがUSBコネクタから抜けた時に、ロボットが暴走してしまうことが分かりました。そこで、USBコネクタからレシーバが抜けたときは、駆動輪を強制的に止めることにしました。レシーバからの情報を取得するarduinoのライブラリを確認したところ、レシーバの接続状態を示す変数がありました。それを利用してUSBコネクタからレシーバが抜けている時は、駆動輪が強制的に止まる処理を実装し、解決しました。
最低限競技できるプログラムを実装出来たので、今後は競技の練習をしながら、プログラムにおかしい部分がないか調べていきます。年明けからは、今回のロボットで一番重要な要素「アームにつけたセンサでオブジェを自動的に取得する動作」の実装を目指します。