1桁7セグメントLEDを表示させてみる。~python編~
はじめに
7セグメントLEDをRaspberryPiを使って表示させていきます。
今回使用するのは1桁です。0~9の数字を表示することが目標です。
以前力業で点灯させましたが、今回は入力した数字に対応して点灯するようにプログラムを作成します。
C言語編はこちら。
用意するもの
Raspberry Pi | Raspberry Pi 4 |
1桁7セグメントLED | OSL10561-LRA |
抵抗 | 100Ω抵抗 |
ジャンパーケーブル | ジャンパーケーブル |
ブレッドボード | ブレッドボード |
1桁7セグメントLEDはカソードコモンの物を使用します。
抵抗については8本使用します。
素子の接続
7セグメントのピンは以下のようになっています。
データシートの抜粋です。
Raspberry Piと7セグメントのピンの対応は次のようにしました。
7セグの8番は使っていません。
7セグピン | GPIO | 点灯箇所 |
1 | 24 | E |
2 | 25 | D |
3 | GND | – |
4 | 12 | C |
5 | 16 | DP |
6 | 21 | B |
7 | 20 | A |
8 | – | – |
9 | 23 | F |
10 | 18 | G |
GPIOの出力をHIGHにすることで、対応する箇所が点灯します。
数字を点灯させるにはHIGHLOWの組み合わせをうまくすれば表現できます。
対応は以下の表のとおりです。
数字 | GPIO24 | GPIO25 | GPIO12 | GPIO16 | GPIO21 | GPIO20 | GPIO23 | GPIO18 |
0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
2 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |
3 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
4 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 |
5 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
6 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
7 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
8 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
9 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
プログラムを作成する
まずは、おまじない。
import RPi.GPIO as GPIO
import time
#SET GPIO
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
続いてメインの処理です。
gpionum = [24,25,12,16,21,20,23,18]
ledhl = [[1,1,1,0,1,1,1,0] ,
[0,0,1,0,1,0,0,0] ,
[1,1,0,0,1,1,0,1] ,
[0,1,1,0,1,1,0,1] ,
[0.0,1,0,1,0,1,1] ,
[0,1,1,0,0,1,1,1] ,
[1,1,1,0,0,1,1,1] ,
[0,0,1,0,1,1,0,0] ,
[1,1,1,0,1,1,1,1] ,
[0,1,1,0,1,1,1,1] ]
gpionum[8]は使用するGPIO番号を格納していきます。
光らせるセグは8個あるので[8]としています。
ledhl[10][8]はGPIOの対応表を参考にgpionum[8]と対応させます。
[10]は光らす数字の数、[8]はセグの数です。
HIGH、LOWと表現していますが、HIGH=1、LOW=0です。
どちらを使ってもOKです。
for i in range(8):
GPIO.setup(gpionum[i],GPIO.OUT) //①
num = input('input number') //②
for i in range(8) :
GPIO.output(gpionum[i],ledhl[int(num)][i]) //③
GPIOのモードをすべてOUTPUTに変更します。for分で簡単にできます。(①)
外部入力で表示したい数字0~9を受け付けます。入力された数字がnumに格納されます(②)
入力された数字に対応したGPIOの出力を変更します。こちらもfor分で繰り返し処理で簡単にできます。(③)
python 7seg.py
input number [ここに0~9を入力]
実行すると入力待ちになるので0~9の数字を入力します。
エラー処理を入れていないので、0~9以外を入れたときの動作はわかりません。
入力した数字が点灯したら成功です。
終わりに
7セグメントの数字点灯をpython言語で作成しました。
C言語よりも簡単でした。手動で7セグメントを表示するよりも簡単なのでは・・・?と思ったほどでした。
自動で表示させてみたい方はお試しください。
今後は4連7segなども使って自作の温度計などを作っていきたいと考えてます。
コメント