著者:米田 聡
小型コンピュータボード「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)