参考: Beginning BBC micro:bit: A Practical Introduction to micro:bit Development, pp.90-95
x 軸だけ読み取ってみる。
- ディバイスアドレスは 0x1d である。
- 8 ビットデータのみ使う場合は CTRL_REG1 レジスタの F_READ ビットをセットしなければならない。CTRL_REG1 レジスタのアドレスは 0x2a である。
- x 軸の 8 ビットデータは OUT_X_MSB レジスタに保存される。
from microbit import * i2c.write(0x1d, bytes([0x2a, 1])) def raw2g(raw): #最上位ビットに 1 が立っていたら負数なので -0d1 ~ -0d128 に変換する。 if 0b10000000 == (0b10000000 & raw): raw -= 2**8 # 8 ビットの生データ (+0d127 ~ -0d128) を g 値 (+1.984375 g ~ -2.0 g) に変換して返す。 return 4/(2**8) * raw while True: raw = i2c.read(0x1d, 2)[1] g_x = raw2g(raw) print(bin(raw), g_x, sep=", ") sleep(500)