Raspberry Piで7セグメントLEDを簡単に点灯させよう (3) 配線量を少なくできるシフトレジスタを使った点灯方法 その2

7セグメントLEDを2個点灯させる

 2個目の7セグメントLEDを組み立てます。

 2個の7セグメントLEDをすっきりとつなぐために、ブレッドボード上に各信号をつなぐ配線をジャンパ線で行います。右側を1桁目、左側を2桁と呼び、左桁のSDIに入った信号はSDOから出て1桁目のSDIに入るように配線します。黄色のジャンパ線です。

 SCKのクロックとLATCHは共通ですから、同じ端子をジャンパ線でショートします。残りは電源の2本です。+3.3Vは赤色、GNDは黒色のジャンパ線で配線します。

 二つの7セグメントLEDを挿し込みます。ラズパイとジャンパ線で接続します。ピンヘッダを切り分けたときにできた境目の出っ張りをヤスリで軽く削ると、二つはぴったりと並びます。

2桁を表示させるプログラム

 chr(255)はすべてのセグメントを点灯させます。chr(127)はdp以外のセグメントを点灯させます。最初のデータは次のデータが送られると先(1桁目)に送られます。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wiringpi

#pin raspi 74HC595
#MOSI= 19 #SDI
#CLK = 23 #SCK
#CE0 = 24 #LATCH

SPI_Ch= 0 #CE0
SPI_Speed = 100000

# initialization
print("Initialization...")
wiringpi.wiringPiSPISetup (SPI_Ch, SPI_Speed)


#main
data = chr(255)+chr(127)
wiringpi.wiringPiSPIDataRW(SPI_Ch, data)

print("done")



実際の信号を見る

 オシロスコープで各信号を見ます。LATCHは2桁目のデータのシフトが終わった後にLow->Highに変化し、LEDが点灯します。

次のステップ

 2桁がうまく表示できました。7セグメントLEDを追加していけば、何桁でも表示ができることになります。データはchr()で桁数分連結します。

 ラズパイの+3.3V端子からの配給できる電流に限りがあるので、つなげられる個数に限界があります。

 LEDのセグメントとデータの関係を示します。

  • 左の1からminusは表示したい数値、記号
  • [ ]はdp,g,f,e,d,c,b,aのセグメントのデータ(点灯する場所が'1' )
  • 右の#はchrの数値

1=[0,0,0,0,0,1,1,0] #6
2=[0,1,0,1,1,0,1,1] #91
3=[0,1,0,0,1,1,1,1] #79
4=[0,1,1,0,0,1,1,0] #102
5=[0,1,1,0,1,1,0,1] #109
6=[0,1,1,1,1,1,0,1] #125
7=[0,0,0,0,0,1,1,1] #7
8=[0,1,1,1,1,1,1,1] #127
9=[0,1,1,0,0,1,1,1] #103
0=[0,0,1,1,1,1,1,1] #63
dot =[1,0,0,0,0,0,0,0] #128
minus=[0,1,0,0,0,0,0,0] #64

 ここで紹介しているプログラムは、表示する数字が事前にわかっている場合に使えます。測定したデータを表示するときなどは、関数にして数値データを受け取って表示する工夫が必要です。