一、简介
之前我们成功驱动了LCD12864和LCD1602, 这次我们来驱动oled12864。OLED和LCD有什么不同呢?主要是发光方式的不同, OLED每个像素点都是主动发光, LCD则是依靠背光才能发光。当然这些对大多数人来说不重要, 我们作为使用者主要是使用显示器进行信息的显示, 而不是弄懂底层原理设计屏幕是吧。
需要注意的是我这里使用的OLED的驱动是SH1106, 但是大多数屏幕都是SSD1306, 不过得益于u8g2良好的封装, 我们只需在定义数据的时候做一点改变即可。
这是我的一块OLED👇
image
二、引脚定义
编号 | 丝印/符号 | 引脚说明 |
---|---|---|
1 | GND | 电源地 |
2 | VCC | 电源正极,实测5V系统和3.3V系统均可 |
3 | SCL | SPI时钟信号 |
4 | SDA | SPI数据信号 |
5 | RST | 复位 |
6 | D/C | 数据/命令 |
三、应用电路, 主控为esp8266
在这里插入图片描述
在arduino开发环境中不能直接用GPIO的编号, 可以可以参考下图👇
在这里插入图片描述
例如应用电路中SCL连接的为GPIO13, 从上图中我们可以找到GPIO13对应的为D7, 在代码中这个引脚的编号也就为D7
四、驱动代码
#include <U8g2lib.h> //这个库需要自己安装, 不会请看后面
/*如果你的显示器不是SH1106这个驱动芯片, 到支持的驱动芯片列表中寻找定义方式, 修改下面这行↓*/
U8G2_SH1106_128X64_NONAME_1_4W_SW_SPI u8g2(/*显示方向*/U8G2_R0, /*clock/SCL*/D7, /*data/SDA*/D6, /*cs*/U8X8_PIN_NONE ,/*DC*/D0 ,/*reset/RST*/D5);//创建显示器实例
void setup() {
u8g2.begin(); //显示器初始化
}
void loop(void) {
u8g2.firstPage(); //此为显示循环, 更加详细的内容可以参照下面给出的链接
do {
u8g2.setFont(u8g2_font_ncenB14_tr); //设置字体
u8g2.drawStr(0,20,"MadonG"); //在指定位置显示字符 MadonG
} while ( u8g2.nextPage() );
delay(1000);
}
- 需要注意的是, 如果你的显示器的驱动芯片不是SH1106, 那么你需要更改数据结构定义部分, 详细请点击👉 支持的驱动芯片列表
- 如果你的显示器缺少了数据定义的时候需要的引脚, 例如我的显示器没有CS引脚, 则传入 U8X8_PIN_NONE 表示没有这个引脚
- 如果你想构造更加复杂的图像, 更多u8g2库的相关操作请点击👉深入学习Arduino u8g2 OLED库,一篇就够
- 如果还不会在ArduinoIDE中安装库文件, 点击👉Arduino IDE如何安装库文件
五、效果展示
image