ESP32 OLED
时间: 2024-12-29 18:19:49 浏览: 8
### ESP32连接配置OLED显示屏教程及示例代码
#### 配置环境与硬件准备
为了使ESP32能够成功驱动OLED屏幕,需先准备好相应的开发板以及OLED模块。确保已安装好Arduino IDE并添加了ESP32的支持包。
#### 连接方式说明
对于采用I2C接口通信的0.96英寸OLED屏来说,其SDA和SCL引脚应分别接到ESP32上的GPIO21(GPIO_SDA)和GPIO22(GPIO_SCL),这符合大多数情况下默认设置的要求[^3]。
#### 初始化库文件引入
在编写程序前,还需要下载并导入Adafruit_GFX_Library和Adafruit_SSD1306这两个类库来支持图形界面操作功能:
```cpp
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_SSD1306.h>// Hardware-specific library for SSD1306 displays
```
#### 创建实例化对象
创建一个名为`display`的对象用于表示具体的显示器设备,并指定宽度、高度参数以及所使用的硬件串行总线指针变量`&Wire`作为构造函数的一部分;同时提供重置引脚编号(如果存在的话)。这里假设不使用专用复位管脚,则可以传入-1代替实际物理位置[^2]:
```cpp
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
```
#### 开始初始化过程
调用成员方法`.begin()`完成对显示芯片内部寄存器状态设定工作,其中第一个参数用来指示电源模式选择开关电容供电还是外部直流输入,第二个则是预设好的I²C地址值,默认为`0x3C`:
```cpp
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
```
#### 基础绘图命令展示
通过一系列简单的API调用来实现文字输出效果,比如清除整个画面内容(`clearDisplay()`)、调整字体颜色(`setTextColor()`)、定位光标位置(`setCursor()`)等基本操作之后再执行最终渲染指令(`display()`):
```cpp
void setup(){
...
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.print("Hello, world!");
display.display();
...
}
void loop(){}
```
#### 局部更新计数器数值案例
当涉及到动态数据呈现时,可以通过覆盖原有区域的方式达到只刷新部分的效果,从而提高效率减少闪烁现象的发生。如下所示,在固定区域内循环打印递增整型变量的内容:
```cpp
for(int i=0;i<10;++i){
display.fillRect(48,0,6*strlen(String(i).c_str()),8,SSD1306_BLACK);// 清除旧数字所在矩形框内的像素点
display.setCursor(48,0);
display.print(i);
display.display();
delay(1000);
}
```
以上就是基于ESP32平台控制OLED显示屏的一个简单入门指南及其配套源码片段介绍。
阅读全文