You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:54:50