そもそもは秋葉原のa店でこのLEDがディスカウントされていたことが発端だ。 「ひとつ10円」に釣られて、ポチってしまった。10個買っても100円は嬉しかった。 4桁・高さ9mmの小さな表示器だ。 届いたものを見て、「さて何に使おう?」 たまたま、 「歳を取ると温度・湿度に関する感度が悪くなるので熱中症に注意しましょう。」 と言う注意を何かで読んだ。そして、その前にArduino UNOで遊んだDHT11と言う温湿度センサが手元にあった。 それで、これを作る気になった。 ただし、この小さなLEDをシールドに付けてUNOで表示させるのはバランスが悪い。何よりUNOは高価だ。 ネットで調べるとArduino Pro/Miniなら小さくて安い。ATMEGA328PのCPUが単体で250円程するのに、ProMiniはチップも載って350円程だった(!)CPUのピンを全部配線することを考えると、ProMiniのC/Pが際立っていた。 「これなら沢山作って知り合いにあげても良いかな?」と、量産も見据えてスタートしたのがこのプロジェクト(笑)だった。
今回使用したLEDは4桁のものだ。7セグなので、一桁当たりLEDが7つ(DPを除いて)。4桁だと7×4で、28個のLEDがある。 ArduinoにはMEGAを除いてそんなに沢山の出力ポートはないので、工夫がいる。(もとよりこのLEDは7セグメントが全部並列に接続されている) このような表示器の場合、ダイナミック点灯方式を取るのが一般的だ。 7セグは並列に7つのポートに繋ぎ、桁選択を4つのポートに接続すれば、7+4=11個のポートで制御できる。 ただし、同時に1桁しか表示出来ない。しかし人間の目には残像効果があるので、速い速度で切り替えてゆくと、全部の桁が表示されているように見えるのだ。 今回は消費電力を少なくしたかった。そうすると表示はどうしても暗くなってしまう。Githubなどで7セグ用のドライバも公開されている。最初はこれを使わせて貰うつもりだったが、ひとつの桁の消灯から次の桁の点灯までの処理が長くてなお表示が暗くなってしまった。 止む無く、このLEDに特化した専用のドライバを開発することになってしまった。
LEDが9mmと小さいので、何としても小型化を目指したかった。 そのため、CPUとLEDの接続には苦労した。途中に限流抵抗を入れなくてはならない。立体配線にしたり、SMDタイプを使ったり色々工夫を凝らした。 写真のものは5号機で、これが割と小さくかつ作りやすく配置できたものの1つだ。 1号機は「あちゃん」を使って表裏を抵抗と配線で繋いで苦労したが、思ったほど小さくはならなかった。