LoginSignup
0
0

More than 1 year has passed since last update.

Arduino メモ

Last updated at Posted at 2022-07-14

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     *        *        *     要求がタイムアウトしました。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0