在使用 ESP8266 进行开发时,我遇到了 I2C 通讯的问题。
具体来说,我需要使用两个 I2C 通讯接口,而默认的硬件 SDA 和 SCL 引脚(D1 和 D2)已经被占用。因此,我选择了 12 和 14 号引脚作为另一个设备的 SDA 和 SCL。
在开始时,如果我没有单独设置每个 I2C 设备的引脚,就会出现其中某个设备无法同时使用的情况。
后来我了解到,每次启用 I2C 都需要设置Wire.begin()才能让 I2C 正常工作。
以下是我的代码实现:
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <math.h>
#include <Wire.h>
#define ADDR 0b0100011 // I2C 设备地址
// 字符串用于存储光照数据
String str;
int i=1;
// I2C 引脚定义
int BH1750_SDA=12;
int BH1750_SCL=14;
int OLED_SDA=4;
int OLED_SCL=5;
int OLED_Txt_Size=2;
// 创建一个 SSD1306 对象,用于控制 OLED 显示
Adafruit_SSD1306 oled(128, 64, &Wire,-1);
void setup() {
// 初始化 OLED 显示
oled.begin(SSD1306_SWITCHCAPVCC,0x3C);
ol