1
1

More than 5 years have passed since last update.

line monitor > 情報表示部分 (v0.1) > 7seg led > display 0 to 9 and decimal point

Last updated at Posted at 2015-11-27

line monitor
http://qiita.com/7of9/items/028556c5a819a6a8de96


http://qiita.com/7of9/items/69763fc0c0634e7dd687
の続き

動作確認
Raspberry Pi2
7セグメントLED : C-361SR 
抵抗 : 1.1kΩ

やりたいこと

7segment LEDにて0から9の数値とdecimal pointを表示したい。

考慮点

  • C-361SRをRPi2に接続するときに、C-361SRのピン番号を若い値(2)から順番に接続する
  • RPi2への接続もGPIOの左上(Pin#03)から下方向に接続する

上記について、記憶に頼らずに接続できるように実装を試みる。そうすることで、C-361SRの接続と取り外しが気軽にできるようになる。

なおRPi2に接続時はGND(Pin# 09)と3.3V(Pin# 17)を飛ばさないといけない。この点については、ダミーコネクタをあらかじめRPi2に挿しておくことで、誤接続を回避できるようになる。

GPIOテーブル

上記の接続に関する考慮点とC-361SRのデータシートから以下のようにテーブルを作成した

7seg a..DP 7seg Pin# RPi2 GPIO Pin#
a 10 21
b 9 19
c 8 15
d 5 11
e 4 07
f 2 03
g 3 05
DP(h) 7 13

7seg Pin# の1,6はコモン。

プログラム

7segLED_IPadrDisplay v0.1

プログラムは以下から成り立つ

  • IPadrDisplay.py : メインプログラム
  • dummyGPIO.py : RPi2コードをCentOS上で実行するためのダミー
  • util7SegLED.py : 7segmend LED関連のコード

メインプログラム 

IPadrDisplay.py
from util7SegLED import info7seg_init, info7seg_on
import time

'''
v0.1  2015/11/28
  - display 0..9 and decimal point
'''

while True:
    info7seg_init()
    for idx in range(0, 11):
        info7seg_on(idx)
        time.sleep(2)

2秒おきに、0..9とdecimal pointを表示する。

7segment LED display

util7SegLED.py
#import time

#--- selection of import based on the package ---
''' 1. with RPi.GPIO'''
import RPi.GPIO as GPIO
''' 2. without RPi.GPIO'''
#from dummyGPIO import CDummyGPIO
#GPIO = CDummyGPIO()
#-----------------

GPIO.setmode(GPIO.BOARD)

#-------------------
#[User Configuration]
# (Change according to the cable connections)
#
# Pin # of RPi2
#  to Pin# of 7seg LED a..h
#
# > case.1 assignment so that user can connect starting from #2
#   of C-361SR to left upper pin of RPi2 GPIO port
pinnum=[21, 19, 15, 11, 07, 03, 05, 13]


#-------------------
#[Do no change followings]
# onoff bit (7segment led > a..g)
onoff=[ 
[True,  True, True, True,  True,      True,  False, False ], # disp 0
[False, True, True, False, False,     False, False, False ], # disp 1
[True,  True, False, True,  True,      False,  True, False ], # disp 2
[True,  True, True,  True, False,      False, True, False], # disp 3
[False, True, True, False, False,      True, True,  False ], # disp 4
[True, False, True, True, False,       True,  True, False], # disp 5
[True, False, True, True,  True,       True, True, False], # disp 6
[True, True, True, False, False,       True, False, False], # disp 7
[True, True, True,  True,  True,       True, True, False], # disp 8
[True, True, True,  True,  False,       True, True, False], # disp 9
[False, False, False, False, False,     False, False, True], # disp .
]
# TODO: 0z > add out of range display
# TODO: 0z > add all off function
#-------------------

def info7seg_init():
    for idx in range(0, len(pinnum)): 
        GPIO.setup(pinnum[idx], GPIO.OUT) # a..h

def info7seg_on(number):
    for idx in range(0, len(pinnum)): # a..h
        GPIO.output(pinnum[idx], onoff[number][idx])

上記においてユーザが変更するとしたら、pinnum[]への割り当て。

onoff[]は7segment LEDのaからgとDPのON,OFF割当て。こちらはC-361SR(
と同等品)を使う限りは変更しなくていい。

写真

RPi2接続部分

DSC_0006.JPG

7segument LED

DSC_0007.JPG

1.1kΩを接続

表示例(5)

DSC_0005.JPG

"5"を表示している。ただし、ケーブルが2本足りなかったので、右上と上部は点灯しない状態。



(追記)

シールドタイプ

ケーブルをはやしても見にくいため、シールドタイプにした。

DSC_0010.JPG

使用したもの

  • 7セグメントLED : C-361SR
  • 抵抗 : 1.1kohm x 8
  • 基盤 : ICB-88 (Sunhayato)
  • ピンヘッダ : MIL規格、I型20P

シールドタイプにしたところ、ケースの上蓋がしまらなくなった。
また、抜き差しは確かにできるが、ケースがついたままだと抜きにくいため、抜くときはケースをバラすことになる。

以下のページのようなピンヘッダを間にかませば、シールドそのものをケースの外に出せるかも。
http://cranberrytree.blogspot.jp/2014/12/raspberry-pi-b40.html

そうなるとシールドを抜き差ししやすいだろうか。

シールドタイプ v0.2

(追記 2015/11/29)

ピンヘッダを間に入れる方法に変更した。
また、GNDピンをジャンパで切断できるように変更。これで、LEDを表示しない時はジャンパをずらせばいい。

DSC_0011.JPG

ピンヘッダでオス・メス変換した後。
ケースの上部に出ていて、シールドを抜き差ししやすい。
また、クリアケースの蓋の開け閉めにも支障がない。

DSC_0014.JPG

7セグLED接続の3形態。
上から順番に作成してきた。

DSC_0015.JPG

裏返した所。
もうちょっと細い線で実装してもよかったかもしれない。
使用した線はAWG24.

DSC_0017.JPG

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1