ESP32 驱动 OLED 显示屏指南

ESP32 可以通过 I2C 或 SPI 接口驱动 OLED 显示屏(通常是 SSD1306 驱动的 128×64 或 128×32 OLED)。以下是基本的使用方法:

所需材料

  • ESP32 开发板
  • SSD1306 OLED 显示屏 (I2C 接口)
  • 杜邦线若干

接线方式 (I2C)

OLED    ESP32
VCC  -> 3.3V
GND  -> GND
SCL  -> GPIO 22 (默认I2C SCL)
SDA  -> GPIO 21 (默认I2C SDA)

代码实现

1. 安装必要的库

在 Arduino IDE 中安装以下库:

  • Adafruit SSD1306
  • Adafruit GFX Library

2. 示例代码

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED 宽度, 单位像素
#define SCREEN_HEIGHT 64 // OLED 高度, 单位像素
#define OLED_RESET     -1 // Reset pin # (或 -1 如果共享 Arduino reset pin)
#define SCREEN_ADDRESS 0x3C // I2C地址(通常0x3C或0x3D)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  Serial.begin(115200);
  
  // 初始化OLED
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 分配失败"));
    for(;;); // 卡在这里
  }
  
  // 显示初始内容
  display.clearDisplay();
  display.setTextSize(1);             // 正常1:1像素比例
  display.setTextColor(SSD1306_WHITE); // 绘制白色文字
  display.setCursor(0,0);             // 起始位置
  display.println(F("Hello, ESP32!"));
  display.display();
  delay(2000);
}

void loop() {
  // 显示动态内容
  display.clearDisplay();
  
  // 绘制静态文本
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.print("ESP32 OLED Test");
  
  // 绘制动态数字
  display.setTextSize(2);
  display.setCursor(0,20);
  display.print("Count: ");
  display.print(millis() / 1000);
  
  // 绘制图形
  display.drawRect(0, 40, 120, 20, WHITE);
  display.fillRect(2, 42, (millis()/100) % 116, 16, WHITE);
  
  display.display();
  delay(10);
}

其他功能

绘制图形

// 绘制线条
display.drawLine(0, 0, 127, 63, WHITE);

// 绘制矩形
display.drawRect(10, 10, 50, 30, WHITE);

// 填充矩形
display.fillRect(70, 10, 50, 30, WHITE);

// 绘制圆形
display.drawCircle(64, 32, 20, WHITE);

显示位图

// 定义位图数组
static const unsigned char PROGMEM logo_bmp[] = {
  0b00000000, 0b11000000,
  // 更多位图数据...
};

// 显示位图
display.drawBitmap(0, 0, logo_bmp, 16, 16, WHITE);

常见问题

  1. 显示屏不亮
    • 检查接线是否正确
    • 确认I2C地址是否正确(尝试0x3C或0x3D)
    • 确保OLED显示屏支持3.3V电压
  2. 显示内容错乱
    • 检查显示屏分辨率设置是否正确
    • 确保I2C引脚没有冲突
  3. 显示闪烁
    • 减少display.display()的调用频率
    • 使用双缓冲技术(如果库支持)

进阶使用

对于更复杂的应用,可以考虑:

  • 使用U8g2库(提供更多字体和绘图功能)
  • 实现页面切换功能
  • 添加用户输入控制显示内容
  • 使用硬件SPI接口提高刷新率(如果OLED支持)

希望这个指南能帮助你开始在ESP32上使用OLED显示屏!

本网站所收集的公开资料部分来源于互联网,其版权归原作者本人所有,本站只是转载和摘录,目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其的真实性能做到合理的研判负责,也不构成任何其他建议,如果有任何侵犯您权益和知识产权的地方,请来邮或来电告知本站,经过核实,我们会及时的进行整理删除,谢谢!
评论 共0条
取消回复 发布评论