ESP8266 同时连接 BH1750 和 OLED

在ESP8266开发过程中,遇到I2C通信挑战,需要同时连接BH1750和OLED。解决方法是利用12和14号引脚作为额外的SDA和SCL,并为每个I2C设备单独设置Wire.begin()。通过Wire.write()和Wire.read()实现与设备通信。
摘要由CSDN通过智能技术生成

在使用 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值