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のピンアウトを確認しつつ配線する。

https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html#pinout-and-design-files

 

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の真上で磁石をテキトーに指で摘んで回転させると角度が表示される。

 

これで磁石の角度が取れた。