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

Raspberry Piを100%活用しよう(Vol.80掲載)

著者:米田 聡

小型コンピュータボード「Raspberry Pi」(ラズパイ)向けにさまざまな拡張ボードが発売されています。その拡張ボードとラズパイを組み合わせれば、ラズパイでいろいろなことが簡単に試せます。第13回は、照明用などの高輝度LEDの明るさを制御できる拡張基板を扱います。

シェルスクリプトマガジン Vol.80は以下のリンク先でご購入できます。

図5 LEDの明るさを制御するプログラム(ADRSZSW.py)

import RPi.GPIO as GPIO
import smbus
import time

ADDR=0x56   # I2Cアドレス
SW=5        # スイッチのGPIO
bus = None  

value: int = 0x0    # 明るさの値

# スイッチのコールバック関数
def switch(ch):
        global value
        value += 0x05
        # デューティ比を書き込む
        bus.write_byte_data(ADDR, 0x01, (value & 0xFF))
        # デューティー比を読み出す
        current = bus.read_byte_data(ADDR,0)
        print(current)

if __name__ == "__main__":
        bus = smbus.SMBus(1)
        bus.write_byte_data(ADDR, 0x01, 0)

        # GPIOの設定
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(SW, GPIO.IN)
        GPIO.add_event_detect(SW, GPIO.FALLING, callback=switch, bouncetime=200)

        try:
                while True:
                        time.sleep(30)
        except KeyboardInterrupt:
                pass
        GPIO.remove_event_detect(SW)
        GPIO.cleanup(SW)