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

4桁の7セグメントLEDが入手できる

 1桁、2桁と点灯実験をしてきました。4桁あれば、電圧などを表示するときに役立ちます。シフトレジスタ74HC595を搭載した4桁の7セグメントLEDが販売されています。8桁の製品もあります。また、シフトレジスタではなく専用のICを搭載した製品もあります。

 ここでは、74HC595を搭載した4桁の7セグメントLEDを取り上げますが、この製品にも74HC595が2個、4個搭載の異なる製品があります。

 1個の7セグメントLEDに対して1個の74HC595が必要なのに、半分の個数でも表示ができる製品があります。これは、1個の74HC747がセグメントのデータを保持し、もう1個は桁の情報を持つように設計されています。したがって、データを送っただけでは、1個の7セグメントLEDしか点灯しません。全桁を点灯するためには、短時間にそれぞれを切り替えます。ダイナミック点灯と書かれてい場合があります。実際に点灯させるとちらつくことがあります。

 ここでは、4個の74HC595を搭載した4桁の7セグメントLEDを取り上げます。ebayで購入しました。

7セグメントLEDボードとの接続

 製品によって端子名がいろいろあります。電源が2本あります。信号線は、秋月電子通商の製品と同じく3本です。前回の接続とGNDのピンを変更しました。こちらのほうが配線しやすいです。

GPIOのピン番号と機能 7セグメントLEDボードのピン名称
17 +3.3V VDD
19 MOSI SDI
20 GND GND
23 CLK SCK
24 CE0 LOAD

プログラム

 秋月電子通商の製品とはLEDの点灯するデータが異なり、負論理で指定します。数字の1は11111001=chr(249)です。「0987」を表示するプログラムです。

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

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

SPI_Ch= 0 #CE0
SPI_Speed = 100000

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

#main
data = chr(248)+chr(128)+chr(152)+chr(192)
wiringpi.wiringPiSPIDataRW(SPI_Ch, data)

print("done")

表示の数字 chrに入れる数値
1 249
2 164
3 176
4 153
5 146
6 130
7 248
8 128
9 152
0 192

 「4321」と表示した例です。