Raspberry Pi PicoでL3GD20Hを使う(MicroPython/I2C)

秋月で買ったジャイロセンサを使ってみました。
Raspberry Pi Picoで使った事例が見つからなかったのでメモ。

[買ったもの]

[配線]
Raspberry Pi Pico - L3GD20H
1番 - 3番(SDA)
2番 - 2番(SCL)
36番 - 1番(+V)
38番 - 8番(GND)

L3GD20H - L3GD20H
1番(+V) - 5番(CS)
 → I2Cモードに切り替えるため
8番(GND) - 4番(SA0)
 → I2Cのアドレスを0x6Aに指定するため

[構成]
※ 一応SDA/SCLを10kΩでプルアップしています。なくても問題はなさそう?

[コード]

from machine import I2C, Pin
import utime

i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=100000)

i2c.writeto_mem(0x6A, 0x20, bytearray([0x0F]))

while True:
    x = (i2c.readfrom_mem(0x6A, 0x29, 1)[0] << 8) | i2c.readfrom_mem(0x6A, 0x28, 1)[0]
    y = (i2c.readfrom_mem(0x6A, 0x2B, 1)[0] << 8) | i2c.readfrom_mem(0x6A, 0x2A, 1)[0]
    z = (i2c.readfrom_mem(0x6A, 0x2D, 1)[0] << 8) | i2c.readfrom_mem(0x6A, 0x2C, 1)[0]

    if x >= 32768:
        x -= 65536
    if y >= 32768:
        y -= 65536
    if z >= 32768:
        z -= 65536

    print('%(x)5d, %(y)5d, %(z)5d' %{'x': x,'y': y,'z': z})
    utime.sleep(0.1)

int → unsigned shortに変換する方法が見つからず苦肉の策でif文処理…