【发布时间】:2017-07-16 06:25:21
【问题描述】:
我正在尝试让我的 ESP8266 连接并通过 i2c 总线发送消息。我正在使用 NodeMcu 开发板。 D1、D2 和 GND 引脚相互连接。
我主人的代码是:
#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 固件上不可用。请参阅 github.com/nodemcu/nodemcu-firmware/issues/1687 和 github.com/esp8266/Arduino/issues/1330 。另见bbs.espressif.com/viewtopic.php?t=2092。
-
你可以尝试普通的老式串行通信。
-
见link。但我还是想不通。即使在变化之后
-
我正在使用两个 esp07。是否可以让它们通过 i2c 进行通信(GPIO4,GPIO5 => 它们是 SDA,SCL)?