説明
Wireライブラリを使うとI2Cデバイスと通信することができる。I2Cは全てのArduinoボードに存在する。I2Cは一般的なプロトコルで、外部のI2C機器とのデータの送受信に主に利用される。I2Cについて学ぶには、ArduinoとI2Cプロトコル(Wire)ガイドを参照すること。
このライブラリはStreamクラスを継承していて、他のread/writeライブラリとの整合性をとっている。このため、send()とreceive()は、write()とread()に変更された。
このライブラリを使うには、スケッチの先頭でインクルードすること。
|
|
デフォルトI2Cピン
ハードウェアの設計とさまざまなアーキテクチャの違いにより、I2Cピンは異なる場所に配置されている。以下のピンマッピングはデフォルトピンを示している。さらに、いくつかのボードでの追加のポートも示している。
| Board | I2C Default | I2C1 | I2C2 | 備考 |
|---|---|---|---|---|
| UNO R3, UNO R3 SMD, UNO Mini LE | A4(SDA), A5(SCL) | SDA/SCLピンでもI2Cが利用可能(デジタルヘッダ) | ||
| UNO R4 Minima, UNO R4 WiFi | A4(SDA), A5(SCL) | Qwiic: D27(SDA), D26(SCL) | SDA/SCLピンでもI2Cが利用可能(デジタルヘッダ) | |
| UNO WiFi Rev2, Zero | 20(SDA), 21(SCL) | |||
| Leonardo, Micro, Yùn Rev2 | D2(SDA), D3(SCL) | |||
| Nano boards | A4(SDA), A5(SCL) | |||
| MKR boards | D11(SDA), D12(SCL) | |||
| GIGA R1 WiFi | 20(SDA), 21(SCL) | D102(SDA1), D101 (SCL1) | D9(SDA2), D8 (SCL2) | I2C1では、Wire1.begin()を使い、I2C2では、Wire2.begin()を使う。 |
| Due | 20(SDA), 21(SCL) | D70(SDA1), D71(SCL1) | I2C1では、Wire1.begin()を使う。 | |
| Mega 2560 Rev3 | D20(SDA), D21(SCL) |
関数
初期化
コントローラ送信
コントローラ受信
周辺機器コールバック
タイムアウト設定
注意
I2Cアドレス: Wireライブラリは7ビットアドレスだけを利用する。8ビットアドレスを使うデータシートやサンプルコードがある場合は、最下位ビットを落とし(値を1ビット右にシフトする)、アドレスを0から127の間にする必要がある。しかし、0から7のアドレスは予約されているため使われないので、利用できる最初のアドレスは8である。
プルアップ抵抗: SDA/SCLピンに接続する際は、プルアップ抵抗が必要であることに注意が必要である。いくつかのボード(例: MEGA2560ボード)、20番ピンと21番ピンにプルアップ抵抗が内蔵されている。詳細は、使用例を参照すること。
バッファサイズ: Wireライブラリのは、32バイトのバッファを利用する。このため、通信はその中で行う必要がある。1回の通信で上限を超えた場合は、超えたデータは捨てられる。
タイムアウト: 最近のWireライブラリでは、特定のバス障害によるハングアップを防ぐためにタイムアウト機能を利用できる。しかし、この機能はデフォルトでは有効になっていない。Wireライブラリを使用する際は、常にタイムアウトを有効にすることを推奨する。詳細はWire.setWireTimeout()を参照すること。
オリジナルのページ
https://docs.arduino.cc/language-reference/en/functions/communication/wire/