micro:bit / I2C バス / オンボード加速度計 / I2C バスから 3 軸の 8 ビットデータを読み取る / MicroPython

from microbit import *
i2c.write(0x1d, bytes([0x2a, 1]))

def raw2g(raw):
    if 0b10000000 == (0b10000000 & raw):
        raw -= 2**8
    
    return 4/(2**8) * raw
    
while True:
    raw = i2c.read(0x1d, 6)
    g_x = raw2g(raw[1])
    g_y = raw2g(raw[3])
    g_z = raw2g(raw[5])
    
    print("x: %0.5f, y: %0.5f, z: %0.5f" % (g_x, g_y, g_z))
    sleep(500)

実行結果:
f:id:ti-nspire:20180530092327p:plain:w400