ESP32+Arduino入门教程(二):连接OLED屏

在ESP32+Arduino入门教程的第一篇中,我们对ESP32和Arduino开发环境有了基本的了解。而在这一篇教程里,我们将深入探讨如何将OLED屏与ESP32连接,并通过Arduino IDE进行编程控制。OLED(Organic Light-Emitting Diode)屏具有自发光、对比度高、视角广等优点,在许多物联网和嵌入式系统中都有广泛的应用。通过将ESP32与OLED屏连接,我们可以实现信息的可视化显示,为后续更复杂的项目打下基础。

目录#

  1. 所需材料
  2. OLED屏简介
  3. 硬件连接
  4. 安装库文件
  5. 示例代码及解释
  6. 常见问题及解决方法
  7. 总结

1. 所需材料#

  • ESP32开发板:如ESP32-WROOM-32等,它是我们整个项目的核心控制单元。
  • OLED显示屏:常见的有0.96寸I2C接口的OLED屏,分辨率一般为128x64。
  • 杜邦线:用于连接ESP32和OLED屏。
  • 电脑:安装有Arduino IDE开发环境。

2. OLED屏简介#

我们使用的0.96寸I2C接口OLED屏是一种基于有机发光二极管技术的显示屏。它通过I2C(Inter-Integrated Circuit)总线与ESP32进行通信,I2C是一种串行通信协议,只需要两根线(SDA和SCL)就可以实现设备之间的数据传输,大大减少了引脚的使用。该OLED屏的分辨率为128x64,意味着它可以显示128列和64行的像素点,能够满足基本的文字和简单图形的显示需求。

3. 硬件连接#

将ESP32与OLED屏进行连接时,需要注意引脚的对应关系。以下是具体的连接方式:

ESP32引脚OLED屏引脚
3.3VVCC
GNDGND
GPIO21SDA
GPIO22SCL

连接完成后,确保所有引脚连接牢固,没有松动或短路的情况。

4. 安装库文件#

在Arduino IDE中,我们需要安装相应的库文件才能对OLED屏进行控制。具体步骤如下:

  1. 打开Arduino IDE,点击“工具” -> “管理库”。
  2. 在库管理器中搜索“U8g2”库,该库是一个功能强大的图形库,支持多种显示屏,包括我们使用的OLED屏。
  3. 选择合适的版本进行安装。安装完成后,我们就可以在代码中使用U8g2库提供的函数来控制OLED屏了。

5. 示例代码及解释#

以下是一个简单的示例代码,用于在OLED屏上显示“Hello, ESP32!”:

#include <U8g2lib.h>
 
// 定义OLED屏的驱动类型和I2C地址
U8g2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 22, /* data=*/ 21, /* reset=*/ U8X8_PIN_NONE);
 
void setup() {
  // 初始化OLED屏
  u8g2.begin();
}
 
void loop() {
  // 清空屏幕
  u8g2.firstPage();
  do {
    // 设置字体
    u8g2.setFont(u8g2_font_ncenB08_tr);
    // 在屏幕上显示文本
    u8g2.drawStr(0, 20, "Hello, ESP32!");
  } while ( u8g2.nextPage() );
  delay(1000);
}

代码解释:#

  • #include <U8g2lib.h>:引入U8g2库,以便使用该库提供的函数。
  • U8g2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 22, /* data=*/ 21, /* reset=*/ U8X8_PIN_NONE);:定义一个U8g2对象,指定OLED屏的驱动类型、时钟引脚(SCL)、数据引脚(SDA)和复位引脚。
  • u8g2.begin():初始化OLED屏。
  • u8g2.firstPage()u8g2.nextPage():用于分页显示内容,U8g2库采用分页的方式进行图形绘制。
  • u8g2.setFont(u8g2_font_ncenB08_tr):设置显示字体。
  • u8g2.drawStr(0, 20, "Hello, ESP32!"):在屏幕上指定位置(0, 20)显示文本“Hello, ESP32!”。
  • delay(1000):延时1秒,避免屏幕刷新过快。

6. 常见问题及解决方法#

问题1:OLED屏无显示#

  • 检查硬件连接是否正确,确保引脚连接牢固,没有松动或短路。
  • 检查电源供应是否正常,OLED屏的工作电压一般为3.3V。
  • 检查代码中引脚定义是否与实际连接一致。

问题2:显示内容乱码#

  • 检查字体设置是否正确,不同的字体可能对字符的显示有影响。
  • 确保代码中的字符编码与OLED屏支持的编码一致。

7. 总结#

通过本教程,我们学习了如何将OLED屏与ESP32连接,并使用Arduino IDE进行编程控制。通过简单的示例代码,我们可以在OLED屏上显示文本信息。在后续的教程中,我们将进一步探索如何在OLED屏上显示更复杂的图形和动态信息,以及如何结合ESP32的其他功能实现更丰富的应用。

参考#