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

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

著者:米田 聡

小型コンピュータボード「Raspberry Pi」(ラズパイ)向けにさまざまな拡張ボードが発売されています。その拡張ボードとラズパイを組み合わせれば、ラズパイでいろいろなことが簡単に試せます。第7回は、ボリュームスイッチのような操作を実現する拡張基板を扱います。

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

図4 サンプルプログラム(sample.py)

import smbus
import struct
import time

ADRSZRE_ADDR = 0x54
VALUE_HI     = 0x00
RESET        = 0x02

STEPS = 80  # 1回転=80カウント

bus = smbus.SMBus(1)
degree = 0.0

try:
    while True:
        temp = bus.read_word_data(ADRSZRE_ADDR, VALUE_HI)
        value = struct.unpack(">H", struct.pack("<H", temp))[0]
        if value == 0:
            bus.write_byte_data(ADRSZRE_ADDR, RESET, True) # Zero Reset
            
        degree =  (value % STEPS) *  360.0 / STEPS
        print("%.1f" % degree, end='\r', flush=True)
        time.sleep(0.1)

except KeyboardInterrupt:
    pass