私はESP8266の接続とi2cバスを介してメッセージを送信しようとしています。私はNodeMcu開発ボードを使用しています。ピンD1、D2、GNDは互いに接続されている。ESP8266〜ESP8266 i2C通信
#include <Wire.h>
void setup() {
Wire.begin(D1,D2); // join i2c bus (address optional for master)
Serial.begin(115200);
}
byte x = 0;
void loop() {
Wire.beginTransmission(8);
Wire.write(x); // sends one byte
Wire.endTransmission(); // stop transmitting
Serial.println("Transmitted");
x++;
delay(500);
}
そして、私の奴隷ESP上のコードは次のとおりです:私のマスターに
コードがある
#include <Wire.h>
void setup() {
Wire.begin(8); // join i2c bus with address #8
Wire.onReceive(receiveEvent); // register event
Serial.begin(115200); // start serial for output
}
void loop() {
delay(100);
}
// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany) {
Serial.println("Received..");
/*
while (1 < Wire.available()) { // loop through all but the last
char c = Wire.read(); // receive byte as a character
Serial.print(c); // print the character
}
*/
int x = Wire.read(); // receive byte as an integer
Serial.println(x); // print the integer
}
が実行これは、レシーバチップには出力を与えません。
それはI2Cのように見えないコメントで述べたように
現在Arduino-ESP8266またはNodeMCUファームウェアでは、I2Cスレーブモードは使用できません。 https://github.com/nodemcu/nodemcu-firmware/issues/1687およびhttps://github.com/esp8266/Arduino/issues/1330を参照してください。 http://bbs.espressif.com/viewtopic.php?t=2092も参照してください。 –
普通のシリアル通信を試みるかもしれません。 – dandavis
[リンク](https://github.com/esp8266/Arduino/compare/master...bjoham:i2c_slave)を参照してください。しかし、私はまだそれを理解することはできません。キャンプの後でさえも – user3599285