U8g2 库驱动oled
U8g2 库是一个非常成熟的 OLED 驱动库,支持包括 SH1106 在内的多种控制器,且不会出现上述语法错误。
步骤 1:安装 U8g2 库
- 打开 Arduino IDE → 工具 → 管理库
- 搜索 U8g2,找到U8g2 by olikraus并安装(选择最新版本)
步骤 2:上传代码
#include <Wire.h>
#include <U8g2lib.h>// 初始化U8g2库,指定SH1106控制器、128x64尺寸、I2C地址0x3C
// 引脚:SDA=D2, SCL=D1(ESP8266默认I2C引脚)
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* SCL=*/ D1, /* SDA=*/ D2);void setup() {// 初始化屏幕u8g2.begin();// 开启字体反锯齿(可选)u8g2.enableUTF8Print();
}void loop() {// 清空缓冲区u8g2.clearBuffer();// 选择字体(U8g2内置多种字体,这里用默认字体)u8g2.setFont(u8g2_font_ncenB08_tr);// 第一行文本u8g2.setCursor(0, 15);u8g2.print("XFP1116-07AY");// 第二行文本u8g2.setCursor(0, 30);u8g2.print("ESP8266 + U8g2");// 第三行文本u8g2.setCursor(0, 45);u8g2.print("I2C: 0x3C");// 第四行文本u8g2.setCursor(0, 60);u8g2.print("128x64 Display");// 刷新显示u8g2.sendBuffer();// 延时1秒,减少刷新频率delay(1000);
}
中文输出
#include <Wire.h>
#include <U8g2lib.h>// 初始化U8g2库
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, D1, D2);void setup() {u8g2.begin();u8g2.enableUTF8Print(); // 启用UTF8编码支持
}void loop() {u8g2.clearBuffer();// 显示英文(使用原有字体)u8g2.setFont(u8g2_font_ncenB08_tr);u8g2.setCursor(0, 15);u8g2.print("XFP1116-07AY");// 显示中文(必须使用支持中文的字体)// 选择一个支持中文的字体(u8g2_font_wqy12_t_gb2312是常用的简体中文字体)u8g2.setFont(u8g2_font_wqy12_t_gb2312);u8g2.setCursor(0, 35);u8g2.print("中文测试"); // 显示中文u8g2.setCursor(0, 55);u8g2.print("你好,世界!"); // 显示中文u8g2.sendBuffer();delay(1000);
}