I2C通信(Wireクラス)
I2C通信(Wireクラス)
2線による通信を行うためのI2C通信ライブラリです。Wireと呼ばれることもあります。
使用する場合は、#include <wire.h>
を記述してください。COTTONボードではSCL(クロック)はピン7、SDA(データ)はピン8です。Arduino Pro Miniと異なります。
begin
- 概要
- 初期化します。
- 文法
- Wire.begin()
Wire.begin(address) - パラメータ
- なし
- 戻り値
- なし
requestFrom
- 概要
- 相手先に対して受信シーケンスを発行し、データを読み出す。
- 文法
- Wire.requestFrom(unsigned char address, int count)
- パラメータ
- address: 相手先のアドレス(7bit)。RD/WRを示すビットは含まず、0~0x7fを指定してください。
count: 読み出したいデータのバイト数。0~260を指定。 - 戻り値
- 受信したバイト数。相手先がNACKを返した場合は、countで指定した値に満たなくても終了する。
available
- 概要
- 受信バッファ内にあるデータ数を調べる
- 文法
- Wire.available()
- パラメータ
- なし
- 戻り値
- データ数(バイト単位)
read
- 概要
- 受信バッファからデータを1バイト取り出す
- 文法
- int Wire.read()
- パラメータ
- なし
- 戻り値
- データがある場合は0~255を返す。データがない場合は-1を返す。
beginTransmission
- 概要
- 相手先に対して送信を開始するための準備をする。
- 文法
- Wire.beginTransmission(unsigned char address)
- パラメータ
- address: 相手先アドレス。RD/WRを示すビットは含まず、0~0x7fを指定してください。
- 戻り値
- なし
write
- 概要
- 送信バッファの末尾に文字列や、データを追加する。
- 文法
- int Wire.write(data)
- パラメータ
- data: 送信したい文字列、データ
- 戻り値
- 成功したら送信したバイト数を返す。送信バッファ(260バイト)に空き容量が無ければ失敗して0を返す。
endTransmission
- 概要
- 相手先に送信シーケンスを発行する。I2C通信はこの関数を実行して初めて行われる。
- 文法
- unsigned char Wire.endTransmission()
- パラメータ
- なし
- 戻り値
- 0: 成功
1: 送信バッファ溢れ
2: アドレス送信時にNACKを受信
3: データ送信時にNACKを受信
4: その他エラー
onReceive
- 概要
- マスターからデータを受信したときにコールする関数を登録する。
- 文法
- Wire.onReceive(handler)
- パラメータ
- handler:マスターからデータを受信したときにコールする関数
- 戻り値
- なし
onRequest
- 概要
- マスターがデータを要求したときにコールする関数を登録する。
- 文法
- Wire.onRequest(handler)
- パラメータ
- handler:マスターがデータを要求したときにコールする関数
- 戻り値
- なし
サンプルプログラム
アドレス10のデバイスに0を送るサンプルです。
#include <Arduino.h>
#include <Wire.h>
byte val = 0;
void setup() {
Wire.begin();
Wire.beginTransmission(10); //send to address 10
Wire.write(val); // send 1byte to que
Wire.endTransmission();
}
void loop() {}