LCDは4行しかありませんが、警告灯は全部で7つあります。5つ以上の警告灯が点灯したときにはスクロールしないと、全てを表示しきれません。そんなにたくさんの警告灯が同時点灯する事があるのかというと、あります。エンジン始動時です。また、警告灯のなかには異常時以外にも点灯するものがあります。リアフォグライト、ハイビーム、デフォッガー、パーキングブレーキです。したがってスクロール表示はどうしても必要です。
しかし、キャラクタLCDには、改行やスクロールの機能がありません。そのため、スクロールはArduino側で作ってやる必要があります。
このスクロール表示には苦労しました。結局、スクロールが必要なときと必要でないときで分岐させ、スクロールが必要な場合は1秒ごとに4行すべてを書き換えています。問題はスクロールのスピードで、今は1秒のdelayを入れてます。そのため、スクロール中は警告灯の検出が1秒間に1回しかできません。
実際には、警告灯の検出が1秒遅れたところで実用的な問題はないのですが、あまりスマートな方法とは言えず不満です。そのうちに、もっといい方法がひらめく事に期待しましょう。
Phase0は机上で動作ソフトを作ることですが、それが完成したらPhase1に移行します。Phase1は実際にクルマに搭載します。Phase1に関しても、少し手を付け始めました。
車載のときに一番問題になるのは、取り付け方法です。見映えが悪いと満足度が下がります。しかし、全工程のなかでこれが一番難しいとも言えます。本体は見えないところに置かれるので、適当なケースでいいとして、LCDをどのように設置するかは大きな課題です。
LCDが入る大きさのタカチのケースを買いました。実際には横幅が1mm程度狭いのですが、それくらいなら基板を削ることができます。縦方向がかなり大きかったので切断して合わせてみました。下側がまるあきになりますが、下から覗き込まない限り見えないので、これで大丈夫だと思います。
ここに取り付けようと思っています。これでLCDが入れば、もっといい感じになると思うのですが。どうでしょう。