e-DIY
ディスプレイ

ラズパイで7セグメントLEDに数字やアルファベットを表示させる方法

7セグメントLED

7セグメントLEDとは、7つのセグメント(区分)の点灯・消灯を切り替えることで好きな数字を表示させることができる電子部品です。

使用例としては時計や温度計などで使われ、時間や温度を表示させるのが代表的です。

今回は7セグメントLEDの使い方の基礎として、1桁の数字を表示させる方法について解説していきます。

7セグメントLEDの仕組み

はじめに、7セグメントLEDがどういう仕組になっているかを見ていきましょう。

下図のA~GとDPにそれぞれ個別にLEDが入っています。

7セグメントLEDの仕組み

「7セグメント」ですが、実は8つのLEDが入っているのです。

8つ目はDPと呼ばれ、Decimal Point(小数点)の略です。
数字の右下にある点がDPです。

端子は10本あり、背面から端子が出ています。

7セグメントLED

各端子と内部回路の繋がりはこのようになっています。

7セグメントLEDの内部回路

これら8つのLEDの点灯・消灯を切り替えて数字を表示させます。
例えば、A,B,C,D,GのLEDを点灯させ、他のLEDを消灯させれば「3」を表示させることができます。

7セグメントLEDで3を表示させる方法

今回使う7セグLED(5161BS)はアノードコモンと呼ばれ、アノードが全て接続され、カソードが別々となっています。
逆に、アノードが別々でカソードが全て接続されているものもあり、これをカソードコモンと呼びます。

点灯回路の作り方

ラズパイのGPIOを使って8つのLEDを制御していきます。
使ったラズパイはRaspberry Pi 4 Model Bです。

回路図

7セグメントLEDの制御回路
7セグメントLED接続図

アノードに3.3Vの電源を接続します。
各カソードには220Ωの抵抗を接続し、流す電流を決めます。

VFは1.8Vなので、電流IFは、

IF = (3.3V – 1.8V) / 220Ω = 6.8mA

となります。

抵抗の反対側にGPIOの各端子を接続します。

GPIOの出力がHi(3.3V)のときはLEDには電流が流れないので消灯します。
GPIOの出力がLo(0V)だとLEDに電流が流れ点灯します。

数字を表示させてみよう

それでは、実際に数字を表示させてみましょう。
まず、数字のを表示させてみます。

Pythonのコードは次のようにしました。

#モジュールをインポート
import RPi.GPIO as GPIO #GPIO用のモジュール
import time #時間制御用のモジュール

#使用するGPIOピン設定
seg_pin = [19, 26, 16, 20, 21, 13, 6, 12] #[A, B, C, D, E, F, G, DP]

#GPIOの設定
GPIO.setmode(GPIO.BCM) #BCMモードに設定(GPIOの数字で指定するモード)
GPIO.setup(seg_pin, GPIO.OUT) #GPIOを出力モードに設定

#光らせるLED
seg_on = [19, 26, 16, 20, 6] #「3」を表示

#GPIOの出力設定
GPIO.output(seg_pin, GPIO.HIGH) #全出力をHi(3.3V)にする(全LEDオフ)
GPIO.output(seg_on, GPIO.LOW) #seg_onで設定したピンをLo(0V)にする
time.sleep(5) #5秒間待つ
GPIO.output(seg_pin, GPIO.HIGH) #全出力をHi(3.3V)にする(全LEDオフ)

GPIO.cleanup

これでA,B,C,D,GのLEDを5秒間点灯させてを表示させることができます。

7セグメントLEDで3を表示

次に数字のを表示させてみましょう。
seg_onを次のように書き換えます。

seg_on = [19, 16, 20, 13, 6] #「5」を表示

これでA,C,D,F,GのLEDを点灯させることができるので、が表示されます。

7セグメントLEDで5を表示

アルファベットを表示させてみよう

7セグLEDでは、数字に限らずアルファベットも表示させることができます。
A~Fまでを表示させるために点灯させる箇所は次のようになります。

7セグメントLEDでアルファベット表示

seg_onを次のように書き換えてA,B,C,E,F,GのLEDを点灯させればを表示さることができます。

seg_on = [19, 26, 16, 21, 13, 6] #「A」を表示
7セグメントLEDでAを表示

seg_onを次のように書き換えてA,E,F,GのLEDを点灯させればを表示さることができます。

seg_on = [19, 21, 13, 6] #「F」を表示
7セグメントLEDでFを表示

今回は1桁の7セグLEDを使いましたが、4桁の7セグLEDを使えば時間を表示させるなど、応用の幅が広がります。

関連キーワード

フリーワード検索