在Arduino IDE中使用ESP32驱动SSD1306 OLED屏幕遇阻求助
ESP32 WROOM驱动SSD1306 OLED屏幕故障排查方案
确认I2C引脚与实例配置
ESP32默认I2C0的SCL是22、SDA是21,和你的接线匹配,但要在代码里显式指定Wire实例和引脚,避免默认配置冲突:#include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // 按你的OLED实际宽度修改 #define SCREEN_HEIGHT 64 // 按你的OLED实际高度修改 // 初始化自定义Wire实例 TwoWire myWire = TwoWire(0); // 绑定自定义Wire到OLED显示对象 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &myWire, -1); void setup() { // 启动I2C,指定SDA(21)和SCL(22)引脚 myWire.begin(21, 22); Serial.begin(115200); // 用Pi Pico获取的屏幕地址替换0x3C(常见地址是0x3C或0x3D) if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306初始化失败")); for(;;); // 初始化失败则停在这里 } // 测试显示内容 display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0,0); display.println("OLED测试成功"); display.display(); } void loop() { }跳过ESP32 I2C扫描器,直接用已知地址
ESP32自带的I2C扫描器可能因为速率或兼容性问题无法正确识别地址,直接用Pi Pico获取的真实地址填入display.begin()即可,不用纠结扫描结果。硬件接线复查
确保OLED的VCC接ESP32的3.3V(SSD1306多数不支持5V供电,接5V可能损坏屏幕),GND与ESP32共地,SDA/SCL接线无虚焊、松动。更新库版本
在Arduino IDE库管理器中,把Adafruit SSD1306和Adafruit GFX库更新到最新版本,旧版本对ESP32的Wire库支持可能存在bug。
内容的提问来源于stack exchange,提问作者azza1402
相关产品推荐
相关产品推荐

