ESP8266(Master)とArduino Nano(Slave)間をI2Cで通信します。
Arduino nanoとESP8266間の接続
Arduino nanoとESP8266間の接続ピンを次に示します。
nano(スレーブ) | ESP8266(マスター) | ||
---|---|---|---|
SCL | A5 | SCL | |
SDA | A4 | SDA | |
GND | GND |
Arduino nanoとESP8266間の接続画像を次に示します。
Arduino Nano(Slave)のプログラム作成
Arduino Nano上でスレーブとして動作するプログラムを次に示します。
i2c_nanoslave.ino
/********************************************** Arduino Nano I2C(Slave) **********************************************/ #include <Wire.h> byte b=0; void setup() { Serial.begin(9600); Serial.println("/-----START Arduino Nano-----/"); Serial.println("/----------I2C Slave---------/"); Wire.begin(0x21);// Slave ID #21 Wire.onRequest(requestEvent); } void loop() { } void requestEvent() { Wire.write(b++); }
ESP8266(Master)のプログラム作成
ESP8266上でマスタとして動作するプログラムを次に示します。
i2c_espmaster.ino
/********************************************** ESP8266 I2C(master) **********************************************/ #include <Wire.h> void setup() { Serial.begin(9600); Serial.println("/-----START ESP8266-----/"); Serial.println("/----------I2C Master---------/"); Wire.begin(); } void loop() { Wire.requestFrom(0x21, 1);// request 1 bytes from Slave ID #21 while (Wire.available()) { byte b = Wire.read(); Serial.println(b); } delay(500); }
Arduino nanoとESP8266間通信
作成したプログラムを実行すると、ESP8266のシリアル端末に次の内容が表示され、ESP8266でデータが受信されていることが確認できます。
Hl艤lE懈腫2U働-----START ESP8266-----/ /----------I2C Master---------/ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18