NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(Wire: onReceive関数の使い方)

Wire: onReceive関数
 Wire: onReceive関数は、スレーブデバイスがマスタからの送信を受信したときに呼び出される関数を登録します。

■使用例
 ArduinoIDEで使用するWire: onReceive関数の使い方は以下の通りです。
 試しにこのプログラムをArduinoUNOで実行すると、最初にSerial.begin関数でシリアル通信の初期化、Wire.begin関数でI2Cの初期化、Wire.onRequest関数で割込み関数の登録、Wire.onReceive関数で割込み関数の登録を行います。
 割り込み関数によってデータを受信するとWrite.read関数によって受信データを変数dtに代入し、シリアルモニター上に受信したデータを出力します。
 また割り込み関数によってデータ要求を受信すると受信データに0x11を付けて送り返します。

#include <Wire.h>
byte dt ;

void receiveEvent(int howMany) {// データを受信すると処理される割込み関数
   while (Wire.available()) {
       dt = Wire.read()   ;
       Serial.print(dt) ;
   }
}

void requestEvent() {// データ要求を受信すると処理される割込み関数
   dt = dt + 0x11 ;
   Wire.write(dt) ;
}

void setup() { // 電源起動時とリセットの時だけのみ処理する関数
   Serial.begin(9600) ;
   Wire.begin(8) ;
   Wire.onRequest(requestEvent) ;
   Wire.onReceive(receiveEvent) ;
}

// 繰り返し実行されるメインの処理関数
void loop() {}
イメージ 1
図1:プログラム例

■構文
 Wire.onReceive(handler)

■パラメータ
 handler:スレーブがデータを受け取ったときに呼び出される関数。
 ※これは、単一のintパラメータ(マスタから読み取られたバイト数)をとり、
  何も返しません(例: void myHandler(int numBytes)

■戻り値
 有りません。 

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る