古いカーラジオを分解すると、周波数や時刻を表示していたセグメント式の液晶が残っていることがある。制御チップは生きていても、どのピンをどう叩けば表示が出るのかは、外から見ただけでは分からない。捨てるにはもったいないこの部品を、手元のマイコンで動かし直せないか。
emsyscode氏は、旧型カーラジオの前面パネルに載っていたセグメント液晶を、Arduino Unoで制御して復活させた。パネルの表示を担っていたのは、NEC製のLCDドライバー「uPD16431」だ。カーオーディオなどの機器向けに作られたセグメント駆動用のチップで、最大224個のセグメントを点灯できる。一部の出力をLEDの点灯用に振り分けると、その分だけ表示に使えるセグメントは減る。
作業の中心は、送ったデータのどのビットが画面のどの部分に対応するかを、1つずつ突き止めることだった。emsyscode氏はドライバーのデフォルトの最大セグメント設定を使い、Arduinoから各セグメントを個別に点灯させて、表示RAM上のビットと実際の見た目を対応づけていった。通信では、データを最上位ビットから順に送り、クロックの立ち上がりで書き込む。キー入力を読むときは立ち下がりを使う。このチップは最大4×8の32キーのキーマトリクスにも対応するが、今回は表示の制御に絞った。
苦労したのはデータシートの読み解きだ。記載が必ずしも明快でなく、資料と実機の挙動を突き合わせながら、送るデータを少しずつ調整する作業が大きな割合を占めたという。ドライバーのピン配置は同じチップを使うパネルでも異なることがあるため、別のパネルへ応用する際は、基板上のuPD16431を特定し、データシートを確認して、コネクターのピンをたどる手順が要る。emsyscode氏は、表示基板が5Vで動くとは限らないため、電源を入れる前に必要な電圧を確かめるよう注意を促す。
Arduinoのコードはドライバーのピン配置や通信手順とともにGitHubで公開されており、配線から動作までの全工程をまとめた動画も用意されている。emsyscode氏は元のカーラジオの機種を特定できておらず、このパネルに見覚えのある人や、同じuPD16431を使った別のラジオを知る人からの情報を募っている。眠っている古い機器の表示部を、規格の分からないまま動かしてみたい人には、データシートと実機を突き合わせる作業の一例になるだろう。