著者:米田 聡
シルスクリプトマガジンでは、小型コンピュータボード「Raspberry Pi」(ラズパイ)向けのセンサー搭載拡張ボード「ラズパイセンサーボード」を制作しました。第8回では、前回I/Oエキスパンダ「MCP23017」で増やしたGPIO 端子に7セグメントLEDを接続して制御します。
シェルスクリプトマガジン Vol.61は以下のリンク先でご購入できます。![]()
![]()
図5 7セグメントLEDに数字を出力するクラスライブラリ(ssegled.py)
from mcpgpio import MCPGPIO
class LED7SEG():
__leds = [ [0, 1, 2, 8, 9, 10], # 0
[2, 8], # 1
[9, 8, 11, 0, 1], # 2
[9, 8, 11, 2, 1], # 3
[10,11, 2, 8], # 4
[9, 10, 11, 2, 1], # 5
[9, 10, 11, 2, 1, 0], # 6
[9, 8, 2], # 7
[0, 1, 2, 8, 9, 10, 11],# 8
[1, 2, 8, 9, 10, 11] # 9
]
def __init__(self):
self.gpio = MCPGPIO()
self.gpio.setup(0, MCPGPIO.OUTPUT)
self.gpio.setup(1, MCPGPIO.OUTPUT)
self.gpio.setup(2, MCPGPIO.OUTPUT)
self.gpio.setup(3, MCPGPIO.OUTPUT)
self.gpio.setup(8, MCPGPIO.OUTPUT)
self.gpio.setup(9, MCPGPIO.OUTPUT)
self.gpio.setup(10, MCPGPIO.OUTPUT)
self.gpio.setup(11, MCPGPIO.OUTPUT)
def off(self):
for l in self.__leds[8]:
self.gpio.output(l, MCPGPIO.LOW)
def print(self, n):
if (n < 0) or (n > 9):
return
self.off()
for l in self.__leds[n]:
self.gpio.output(l, MCPGPIO.HIGH)
図6 テストスクリプト(count.py)
from ssegled import LED7SEG
import time
led = LED7SEG()
for i in range(10):
led.print(i)
time.sleep(1)