7セグメントLEDを表示させる

ラズパイピコ

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Ωあたり)。

1桁の7セグメントLEDとラズパイピコの配線図

 ここで、カソードコモンなら、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について解説したいと思います。

コメント

タイトルとURLをコピーしました