Raspberry Pi Picoを使って、7セグメントLEDを表示させる方法について説明します。
7セグメントLED
7セグメントLEDというのはLEDで数字の0~9と.を表示できる素子のことです。下の写真のようなヤツです。見たことありますよね。



ダイオードの配線図も一緒に載せましたが、この絵ではー側が共通電極となっています。このような7セグメントLEDをカソードコモン(カソード共通)と言います。カソード側をGNDにして、A〜G、DPに正電圧をかけることで、各箇所のLEDを光らせることができます。
逆に、アノード側が共通で、カソードがA〜G、DPに対応するアノードコモンの素子もあります。その場合は共通電極であるアノード側に正電圧を印加しておいて、光らせたいLEDに対応する各カソード電圧をGNDにします。
配線図とコード
ラズパイピコを使って1桁7セグメントLEDを光らせる例です。
1桁の7セグメントLEDには足が10本あり、左下が1番、右下が5番、左上が10番、右上が6番となっています。それぞれ上のダイオードの図のように、A~G、DPの電極に対応しています。
ラズパイピコのGPIO(General Purpose Input/Output:汎用入出力)ピンは約3.3vの電圧を出力しますので、LEDを壊さないように適切な抵抗を用います(例えば、LEDにC-551SRDを使うなら330Ωあたり)。

ここで、カソードコモンなら、GDN側にだけ抵抗をつければ、抵抗器を節約できると思うかもしれません。やってみると、点灯させるLEDの個数によってGNDに流れる電流が変わるため、LEDの明るさにバラツキが生じます。抵抗は各LEDのアノード側に入れるようにしてください。
上記の配線図で、7セグメントLEDを表示させるmicro pythonのコードは下記の通りです。
from machine import Pin
#アノードのGPIOを設定
led_Anodes = [
Pin(10, Pin.OUT), #A
Pin(11, Pin.OUT), #B
Pin(13, Pin.OUT), #C
Pin(14, Pin.OUT), #D
Pin(15, Pin.OUT), #E
Pin(9, Pin.OUT), #F
Pin(8, Pin.OUT), #G
Pin(12, Pin.OUT)] #DP
#7セグメントLEDで表示する数字
seg7num = [
[1,1,1,1,1,1,0,0], #0
[0,1,1,0,0,0,0,0], #1
[1,1,0,1,1,0,1,0], #2
[1,1,1,1,0,0,1,0], #3
[0,1,1,0,0,1,1,0], #4
[1,0,1,1,0,1,1,0], #5
[1,0,1,1,1,1,1,0], #6
[1,1,1,0,0,1,0,0], #7
[1,1,1,1,1,1,1,0], #8
[1,1,1,0,0,1,1,0]] #9
#各LEDを消灯する
def off_seg7num():
for led in led_Anodes:
led.value(0)
#7セグメントLEDに任意の数字を表示する
def on_seg7num(num, dot=False):
ns = seg7num[num]
for i,n in enumerate(ns):
led_Anodes[i].value(n)
v = 1 if dot else 0
led_Anodes[7].value(v)
#任意の数字を表示する
#一例として、「4.」と表示する
on_seg7num(4, True)
一例として、数字の4.と表示してみました。on_seg7num(3)などとすると、3と表示されるかと思います。次の記事では、4桁の7セグメントLEDについて解説したいと思います。
コメント