シェルスクリプトマガジン

センサーボードで学ぶ電子回路の制御(Vol.61掲載)

著者:米田 聡

シルスクリプトマガジンでは、小型コンピュータボード「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)