Wireライブラリ
ArduinoでI2C通信をするためのライブラリ
定数
int num=3;
// 型 名前=値
ピンモード指定
pinMode(num, OUTPUT);
//pinMode(ピン番号, ピンの状態)
digitalWrite(num, HIGH);
//digitalWrite(ピン番号, アウトプットの状態)
遅らせる
delay(5000);
//delay(待つ時間ミリ秒);
Wireライブラリをインクルードする
include <Wire.h>
Wireオブジェクトを初期化する
Wire.begin();
Wire.begin(sda, scl[, freq]);
パラメータを指定しない場合、SDAは21番ピン、SCLは22番ピンになる。
sda
: SDAのピン番号
scl
: SCLのピン番号
freq
: I2C通信の周波数(デフォルトは100Hz)
戻り値
: なし
データ送信の流れ
送信の準備をする➡送信キューにデータを送る➡送信キューのデータを実際に送信する
アドレスで示されるデバイスへのI2C送信の準備をする
Wire.beginTransmission(address);
address
: I2Cアドレス
戻り値
: なし
I2Cで送信するデータをキューイングする
Wire.write(value);
Wire.write(string);
Wire.write(data, length);
value
: 1バイトのデータを送る
string
: stringで示される連続バイトを送る
data
: 複数バイトの配列
length
: 送信するバイト数
戻り値
: キューイングしたバイト数
送信キューのデータを送信する
Wire.endTransmission();
Wire.endTransmission(stop);
stop
: trueの場合、送信後、STOPメッセージを送ってI2Cバスを開放する
falseの場合、開放しない。デフォルトはtrue。
戻り値
: 0 成功、1 データが送信バッファより長い、2 アドレス送信時にNACKを受信、3 データ送信時にNACKを受信、4 その他エラー
要求したデータを読み込みたい場合
デバイスにデータを要求、受信➡データを読み出す
I2Cアドレスで指定するデバイスにデータを要求する
Wire.requestFrom(address, bytes);
Wire.requestFrom(address, bytes, stop);
address
: I2Cアドレス
bytes
: 要求するデータバイト数
stop
: tureの場合、送信後STOPメッセージを送って、I2Cバスを開放する。falseの場合、開放しない。デフォルトはtrue。
戻り値
: 読んだデータのバイト数
Wire.requestFrom関数で要求したデータを読む
Wire.read();
戻り値
: 読んだデータ
$ tracert www.cs.princeton.edu
wwwprx.cs.princeton.edu [2001:260:306:b::8070:883d] へのルートをトレースしています
経由するホップ数は最大 30 です:
1 3 ms 28 ms 1 ms ntt.setup [2404:7a81:1:1a00:124b:46ff:fed4:573]
2 * * * 要求がタイムアウトしました。
3 * * * 要求がタイムアウトしました。
4 * * * 要求がタイムアウトしました。
5 8 ms 7 ms 17 ms 2001:260:700:483::483:1
6 * * * 要求がタイムアウトしました。
7 27 ms 7 ms 7 ms 2001:260:306:7::7:1
8 8 ms 7 ms 7 ms 2001:260:306:b::7a84:e2
9 12 ms 7 ms 10 ms ae-13.a00.tokyjp04.jp.bb.gin.ntt.net [2001:260:306:b::3dc8:50fd]
10 17 ms 7 ms 7 ms ae-8.r01.tokyjp08.jp.bb.gin.ntt.net [2001:260:306:b::81fa:244]
11 10 ms 7 ms 7 ms ae-19.r30.tokyjp05.jp.bb.gin.ntt.net [2001:260:306:b::81fa:682]
12 96 ms 95 ms 97 ms ae-5.r24.sttlwa01.us.bb.gin.ntt.net [2001:260:306:b::81fa:48e]
13 172 ms 157 ms 159 ms ae-11.r20.nwrknj03.us.bb.gin.ntt.net [2001:260:306:b::81fa:6b0]
14 159 ms 157 ms 156 ms ae-1.r00.nwrknj03.us.bb.gin.ntt.net [2001:260:306:b::81fa:635]
15 159 ms 156 ms 157 ms ae-0.njedge.nwrknj03.us.bb.gin.ntt.net [2001:260:306:b::a88f:e4cd]
16 183 ms 153 ms 154 ms 2001:260:306:b::829c:22f6
17 178 ms 157 ms 157 ms 2001:260:306:b::829c:fb32
18 152 ms 152 ms 151 ms fw-border-hpcrc-router.princeton.edu [2001:260:306:b::cc99:30fe]
19 159 ms 153 ms 151 ms rtr-core-west-router.princeton.edu [2001:260:306:b::8070:c0d]
20 188 ms 158 ms 158 ms csgate.princeton.edu [2001:260:306:b::8070:c22]
21 * * * 要求がタイムアウトしました。
22 * * * 要求がタイムアウトしました。
23 * * * 要求がタイムアウトしました。
24 * * * 要求がタイムアウトしました。
25 * * * 要求がタイムアウトしました。
26 * * * 要求がタイムアウトしました。
27 * * * 要求がタイムアウトしました。
28 * * * 要求がタイムアウトしました。
29 * * * 要求がタイムアウトしました。
30 * * * 要求がタイムアウトしました。