著者:米田 聡
シルスクリプトマガジンでは、小型コンピュータボード「Raspberry Pi」(ラズパイ)向けのセンサー搭載拡張ボード「ラズパイセンサーボード」を制作しました。第8回では、前回I/Oエキスパンダ「MCP23017」で増やしたGPIO 端子に7セグメントLEDを接続して制御します。
シェルスクリプトマガジン Vol.61は以下のリンク先でご購入できます。
図5 7セグメントLEDに数字を出力するクラスライブラリ(ssegled.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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)
1 2 3 4 5 6 7 8 |
from ssegled import LED7SEG import time led = LED7SEG() for i in range(10): led.print(i) time.sleep(1) |