秋月で買ったジャイロセンサを使ってみました。
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文処理…