I²C

i2c モジュールを使えば BBC micro:bit に接続したデバイスと I²C バスプロトコルで通信できます。同時に複数のスレーブデバイスと通信つることができ、それぞれのデバイスには一意のアドレスがあります。このアドレスはデバイスに固定されているか、設定されています。BBC micro:bit は I²C マスタとして動作します。

ここ に書かれている理由により、デバイスには 7 ビットアドレッシングを使います。

これは、他の micro:bit 関連のソリューションと違っている可能性があります。

デバイスとどのくらい正確に通信する必要があるか、すなわち、送信するバイト数と応答の解釈方法は対象のデバイスに依存しますので、そのデバイスのドキュメンテーションを別途参照する必要があります。

関数

microbit.i2c.init(freq=100000, sda=pin20, scl=pin19)

指定の端子 sdascl と指定のクロック周波数 freq でデバイスを再初期化します。

警告

micro:bit V1 ボードの I²C 端子をデフォルトから変更すると、加速度センサーやコンパスの動作が停止します。これらセンサーが内部でデフォルト以外の端子に結線されているからです。 V2 リビジョンの micro:bit にはモーション・センサとエッジコネクタ用の 独立したI²Cライン があるため、この警告は適用されません。

microbit.i2c.scan()

デバイスのバスをスキャンします。スキャンに応答したデバイスに該当する7ビットアドレスのリストを返します。

microbit.i2c.read(addr, n, repeat=False)

7 ビットアドレス addr のデバイスから n バイトを読み込みます、repeatTrue にすると、ストップビットが送られません。

microbit.i2c.write(addr, buf, repeat=False)

7 ビットアドレス addr のデバイスに buf のバイト列を書き込みます、 repeatTrue にすると、ストップビットが送られません。

結線

デバイスの SCL は micro:bit の端子 19 に、 SDA は micro:bit の端子 20 に結線してください。また、デバイスのグランドを micro:bit のグランド(端子 GND)に結線する必要があります。デバイスよっては外部電源または micro:bit から電力を供給する必要があります。

ボードの I²C ラインには内部にプルアップ抵抗がありますが、長い配線がある場合や多くのデバイスがある場合などでは、ノイズの無い通信を確保するために、プルアップ抵抗を追加する必要があります。