micro:bitにはI2C通信ができるブロックはあるけど、I2Cアドレス一覧を確認するブロックがない。 MicroPython用APIにはI2Cアドレス一覧を確認する方法があるので試してみた。
手順とプログラム
手順
- Pythonエディター(https://python.microbit.org/)にアクセス
- 下記のプログラムをmicro:bitに書き込む
- 実行すると、micro:bitのLEDにI2Cアドレス一覧がスクロール表示される。 正直見づらいけど、確認はできる
プログラム
from microbit import * i2c.init(freq=100000, sda=pin20, scl=pin19) uart.init(baudrate=115200, bits=8, parity=None, stop=1, tx=None, rx=None) while True: uart.write(str(i2c.scan())) display.scroll(str(i2c.scan())) sleep(2000)
シリアル通信で確認(Mac)
上記プログラムはLEDへのスクロール表示とは別に、シリアル通信にも出力している。
Macからシリアル通信で内容を確認してみる。
まずはMacとmicro:bitをUSBケーブルで接続する。
次にコマンドラインから通信デバイス名を確認して、cuコマンドで接続。
$ ls -l /dev/tty.* crw-rw-rw- 1 root wheel 18, 0 6 23 21:00 /dev/tty.Bluetooth-Incoming-Port crw-rw-rw- 1 root wheel 18, 2 6 23 21:00 /dev/tty.LEGOHubTSHub-SerialPort crw-rw-rw- 1 root wheel 18, 4 6 23 21:00 /dev/tty.Sanou-WirelessiAPv2 crw-rw-rw- 1 root wheel 18, 4 6 23 21:00 /dev/tty.usbmodem143331 $ sudo cu -s 115200 -l /dev/tty.usbmodem143331 Password: Connected. [25, 30, 64, 112][25, 30, 64, 112][25, 30, 64, 112]
上記の例は、micro:bitにSuper:bit拡張ボードを接続したときの内容。
25(0x19): micro:bit上に実装されている磁気センサー MAG3110のアドレス
30(0x1E): micro:bit上に実装されている加速度センサー MMA8653のアドレス
64(0x40)と112(0x70): Super:bit上に実装されたPCA9685のアドレス