2 块 Arduino 开发板间 I2C 通信测试

我们使用 Arduino Uno R3 作为 Master,Arduino Nano R3 作为 Slave,只要 2 根线:

Uno 的 A4 和 Nano 的 A4 连接
Uno 的 A5 和 Nano 的 A5 连接

Uno 的完整代码:

#include <Wire.h>
 
void setup() {
  Wire.begin();
}
 
byte x = 0;
 
void loop() {
  Wire.beginTransmission(8);
  Wire.write("x is ");
  Wire.write(x);
  Wire.endTransmission();
 
  x++;
  delay(500);
}

Nano 的完整代码:

#include <Wire.h>
 
void setup() {
  Wire.begin(8);
  Wire.onReceive(receiveEvent);
  Serial.begin(9600);
}
 
void loop() {
  delay(100);
}
 
void receiveEvent(int howMany) {
  while (1 < Wire.available()) {
    char c = Wire.read();
    Serial.print(c);
  }
  int x = Wire.read();
  Serial.println(x);
}

程序运行后,使用 9600 的波特率访问 Nano 的串口,即可看到输出提示:

x is 0
x is 1
x is 2
...

这些字符都是从 Uno 上传过来的