著者:米田 聡
小型コンピュータボード「Raspberry Pi」(ラズパイ)向けにさまざまな拡張ボードが発売されています。その拡張ボードとラズパイを組み合わせれば、ラズパイでいろいろなことが簡単に試せます。第13回は、照明用などの高輝度LEDの明るさを制御できる拡張基板を扱います。
シェルスクリプトマガジン Vol.80は以下のリンク先でご購入できます。
図5 LEDの明るさを制御するプログラム(ADRSZSW.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 |
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) |