LoginSignup
3

More than 3 years have passed since last update.

Arduino工作を見据えて

Last updated at Posted at 2019-08-05

「この記事はリンク情報システム(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」

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
3