「この記事はリンク情報システム(Facebookはこちら)が主催する
真夏のアドベントカレンダー「2019 Tech Connect Summer」のリレー記事です。
「2019 Tech Connect Summer」は engineer.hanzomon のグループメンバによってリレーされます。
↑↑check!!
#はじめに
過去にArduinoを用いて高度計を作ったことを思い出して、また何か作る足掛かりとして
まとめてみました。
深いことは書いていませんがお付き合いください。
#ArduinoとI2C通信
前回作成した高度計、温度計はArduino間の通信を行いました。
この時の通信方法がI2C通信です。
I2Cとは、シリアル通信の方式でMaster側とSlave側に分かれ
双方向での通信を行います。
前回作成時は地上側1つ計測側3つで行ったのですが
Master側1つから複数のSlave側と通信することができます。
#セットアップ
まずは、setup()関数を呼び出します。
使い方は以下の通り。
void setup()
{
Serial.begin(9600);
Wire.begin();
/*省略*/
}
このsetup()関数はArduinoの電源を入れた時、リセットをした時に
1度だけ呼び出され実行します。
ここでは2つの処理をしています。
###Serial.begin(speed)
シリアル通信のデータ転送レート(speedはint型[bps])
を指定。
###Wire.begin(address)
Wireライブラリを用いるとArduino間でMaster側とSlave側としての通信ができるようになります。
Master側に設定する時はパラメーターを省略できます。
#実行
setup()で設定をしたら、実行させたいことをloop()関数の中に書きます。
loop関数の中でも処理ごとに関数化すると見やすくなります。
実行したいことはこの3つを用います。
###・beginTransmission(address)
addressには送信するSlave側のアドレスを指定します。
ここで指定したSlaveに対して送信を開始します。
###・Wire.write()
Master側が送信するデータをキューに入れる時と
Slave側がリクエストを受けてデータを送信する時に使用します。
###・endTransmission()
beginTransmission で開始をした送信を完了する。
この戻り値が0の時は送信成功。
#最後に
次の機会には何か新しく作ったものを
紹介したいと思います!
↓↓たくさんの興味深い記事がたくさんあります!ご覧ください!↓↓
「2019 Tech Connect Summer」