IIDX Picoが使っているAS5600でRaspberry Pi Picoから値をどうやると取得できるのか確かめた。
まずはファームウェアをきちんと書き換える。Raspberry Pi PicoのBOOTSELボタンを押しながらUSB接続をしてドライブとしてマウントする。そのあと https://www.raspberrypi.com/documentation/microcontrollers/micropython.html からRPI_PICO-20240602-v1.23.0.uf2をダウンロードしてきて、それをマウントされたドライブにコピーしてMicroPythonを書き込む。書き込んだらUSBを挿し込み直す。
macOSなので以下のコマンドでscreenで標準入力と標準出力を接続する。
$ screen /dev/tty.usbmodem1101
接続したら、Control-Dでとりあえずリロードする。
ブレッドボードで配線をする。
Raspberry Pi Picoのピンアウトを確認しつつ配線する。
1 → SDA
2 → SCL
3 → GND
36 → VCC
以下のようなコードを書く。ほとんどAIに頼んで書いてもらった。なんとなく意味はわかる。
from machine import Pin,I2C
import time
i2c = I2C(0, scl=Pin(1),sda=Pin(0),freq=100000)
AS5600_ADDR = 0x36
def read_angle():
raw_data = i2c.readfrom_mem(AS5600_ADDR, 0x0C, 2)
angle = (raw_data[0] << 8) | raw_data[1]
return angle
while True:
print("hello")
angle = read_angle()
print("angle: ", angle)
time.sleep(1)
コードを書いたら、コードの全体をコピーしてscreenに貼り付ける。そしてEnterを押す。
あとはAS5600のICの真上で磁石をテキトーに指で摘んで回転させると角度が表示される。
これで磁石の角度が取れた。