Raspberry Pi Zeroで2桁LED時計を作る

2020年5月14日

以前、「ラズベリーパイで7セグメントLEDを光らせてみる」の投稿で7セグメントLEDの実験をしましたが、思うような効果が出ずにお蔵入りになっていました。

しかし、私のようなアナログ世代にとって、7セグメントLEDは最先端のデバイスとして思い入れが深いです。特にLEDのデジタル時計は、出てからしばらくは高価で憧れの製品でした。

そこで、再び7セグメントLEDを使ってみることにしました。前回と同様に「LN516RA」を使います。(※生産終了製品)

2桁表示のLED時計にする

7セグメントLEDの「LN516RA」は、端子が10本付いています。真ん中の2本はアノードで、3.3V電源に接続します。また規定の電流に抑えるために、330Ωの抵抗を通しています。

それ以外の端子は、Raspberry PiのGPIOに接続します。「LN516RA」はアノードコモンのLEDなので、電圧が0の場合にLEDが光ります。7セグメントLEDは8つのLEDで構成されているので、それぞれの端子に電圧をかける、かけないで点灯を制御できます。

このように、1つの7セグメントLEDでGPIOを8つ使ってしまいます。また、Raspberry Pi Zeroの供給電力は小さいので、2個の7セグメントLEDで時計を作ります。そして2桁しかないので、1秒ごとに時間と分を切り替えます。

※「LN516RA」の制御ですが、本当はもっと細かな制御が必要です。本格的な作成を行う際は、仕様表を十分に読んで作成してください。

7セグメントLEDとGPIOの配線について

7セグメントLEDには端子に番号が振られています。その番号と接続先のGPIOは以下のようにしました。(端子番号 -> GPIO番号)

1桁目用の7セグメントLED

1 -> 26
2 -> 19
4 -> 13
5 -> 6
6 -> 12
7 -> 16
9 -> 20
10 ->21

2桁目用の7セグメントLED

1 -> 5
2 -> 0
4 -> 11
5 -> 9
6 -> 25
7 -> 8
9 -> 7
10 ->1

プログラムを作成する

今回のプログラムは、GPIOをON/OFF制御すれば良いだけなので、技術的に簡単です。注意する点は、7セグメントLEDのピンと、対応するLEDの位置を紐づける必要があることです。ピンの構成や、ピンに対応するLEDの位置は、製品によって違うと思うので、仕様書を良く読んでプログラムしましょう。

プログラムは、以下のリンクから取得できます。しょぼいプログラムですが、コードを読めば処理が分かるでしょう。

7ledtest3.c

1秒ごとに、時間と分が入れ替わります。時間の表示の時は、ピリオドが付きます。

LEDの表示ですが、夜であれば良く見えますが、昼間は見えづらいです。これが今回使ったLEDのせいなのかが分からないので、違うLEDでもやってみたいと思います。

夜は断然7セグメントLEDの表示がいい!

夜に7セグメントLED時計を見ると、良く見えて便利です。これがキャラクタ液晶だったら、近くまで寄らないと字が読めません。そして7セグメントLEDでも日中なら、表示部を暗くするように工夫すれば十分使えると思いました。

今後、タイマーや車速計などを作ってみたいと思っています。また、4連の7セグメントLEDでGPIOをあまり使わずに済む製品を使ってみたいですね。