OLED驱动芯片:SSD1306
开发平台: vscode+platformIO
开发板:ESP32 Divkit v1

目前Arduino平台上使用最广泛的OLED库: U8G2
github地址: https://github.com/olikraus/u8g2/

设置和参考手册:https://github.com/olikraus/u8g2/wiki

U8g2:单色显示器库,版本2

U8g2是用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,包括以下控制器:SSD1305,SSD1306,SSD1309,SSD1322,SSD1325,SSD1327,SSD1329,SSD1606,SSD1607,SH1106,SH1107,SH1108,SH1122,T6963,RA8835,LC7981,PCD8544,PCF8812,HX12 ,UC1601,UC1604,UC1608,UC1610,UC1611,UC1701,ST7565,ST7567,ST7588,ST75256,NT7534,IST3020,ST7920,LD7032,KS0108,SED1520,SBN1661,IL3820,MAX7219(完整列表请参见此处)。

为什么要运用U8g2库?

  • U8g2库平台支持性好,基本上支持绝大部分Arduino开发板;
  • U8g2库显示控制器支持性好,基本上市面上的OLED都完美支持;
  • U8g2库 API众多,特别支持了中文,支持了不同字体,这是一个对于开发者俩说不小的福利。

支持单片机平台:

一. u8g2的安装

再platformIO.ini中配置库

lib_deps =# Using a library nameU8g2

二. u8g2函数库

方法可以分为四大类:

  • 基本函数
  • 绘制相关函数
  • 显示配置相关函数
  • 缓存相关函数

U8g2库函数详解

三. 基本函数

⭐1. u8g2.begin() —— 构造U8G2

初始化显示器, 清屏, 唤醒屏幕

/*** 初始化U8g2库* @Note 关联方法 initDisplay clearDisplay setPowerSave*/
bool U8G2::begin(void)

2. u8g2.beginSimple() —— 构造U8G2

只是初始化显示器, 并不清屏, 也不唤醒屏幕

3. u8g2.initDisplay() —— 初始化显示控制器

/*** 初始化显示控制器*/
void U8G2::initDisplay(void)

4. u8g2.clearDisplay() —— 清除屏幕内容

/*** 清除屏幕*/
void U8G2::clearDisplay(void)

⭐5. u8g2.setPowerSave() —— 是否开启省电模式

/*** 清除显示缓冲区* @param is_enable*        1 表示启用显示器的省电模式,屏幕上看不到任何东西*        0 表示禁用省电模式*/
void U8G2::setPowerSave(uint8_t is_enable)

⭐6. u8g2.clear() —— 清除操作

/*** 清除屏幕显示,清除缓冲区,光标回到左上角原点位置(0,0)* @Note 关联方法 home clearDisplay clearBuffer*/
void U8G2::clear(void)

⭐7. u8g2.clearBuffer() —— 清除缓冲区

/*** 清除内存中数据缓冲区*/
void U8G2::clearBuffer(void)

8. u8g2.disableUTF8Print() —— 禁用 UTF8打印

/*** 禁用Arduino平台下支持输出UTF8字符集,默认是开启*/
void U8G2::disableUTF8Print(void)

9. u8g2.enableUTF8Print() —— 启用 UTF8打印

/*** 开启Arduino平台下支持输出UTF8字符集*/
void U8G2::enableUTF8Print(void)

开启UTF-8后,我们可以使用其UTF-8字库

#include <Arduino.h>
#include <U8g2lib.h>U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE, /* clock=*/22, /* data=*/21); // ESP32 Thing, HW I2C with pin remappingvoid setup(void)
{u8g2.begin();u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print() function
}
void loop(void)
{u8g2.setFont(u8g2_font_unifont_t_chinese2); // use chinese2u8g2.firstPage();do{u8g2.setCursor(0, 20);u8g2.print("helloworld"); // Chinese "Hello World"u8g2.setCursor(0, 40);u8g2.print("你好世界"); // Chinese "Hello World"} while (u8g2.nextPage());delay(1000);
}

10. u8g2.home() —— 重置显示光标的位置

/*** 重置显示光标的位置,回到原点(0,0)* @Note 关联方法 print clear*/
void U8G2::home(void)

四. 绘制相关函数

1. u8g2.drawBox() —— 画实心方形

/*** 画实心方形,左上角坐标为(x,y),宽度为w,高度为h* @param x 左上角的x坐标* @param y 左上角的y坐标* @param w 方形的宽度* @param h 方形的高度* @Note 关联方法 drawFrame setDrawColor*/
void U8G2::drawBox(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h)

如果支持绘制颜色(也就是不是单色显示器),那么由setDrawColor设置;

#include <Arduino.h>
#include <U8g2lib.h>U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE, /* clock=*/22, /* data=*/21); // ESP32 Thing, HW I2C with pin remappingvoid setup(void)
{u8g2.begin();
}
void loop(void)
{u8g2.drawBox(3,7,25,15);u8g2.sendBuffer();delay(1000);
}

2. u8g2.drawCircle() —— 画空心圆

/*** 画空心圆,圆心坐标为(x0,y0),半径为rad* @param x0 圆点的x坐标* @param y0 圆点的y坐标* @param rad 圆形的半径* @param opt 圆形选项*        U8G_DRAW_ALL 整个圆*        U8G2_DRAW_UPPER_RIGHT 右上部分的圆弧*        U8G2_DRAW_UPPER_LEFT  左上部分的圆弧*        U8G2_DRAW_LOWER_LEFT  左下部分的圆弧*        U8G2_DRAW_LOWER_RIGHT 右下部分的圆弧*        选项可以通过 | 操作符来组合* @Note 关联方法 drawDisc setDrawColor*/
void U8G2::drawCircle(u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uint_t rad, uint8_t opt = U8G2_DRAW_ALL)
  • 如果支持绘制颜色(也就是不是单色显示器),那么由setDrawColor设置;
  • 直径等于2rad + 1;

例: 画圆动画 (4帧

玩转 ESP32 + Arduino (八) U8G2驱动OLED相关推荐

  1. ESP32万年历 Arduino编程 U8g2库 OLED显示

    课程设计 基于ESP32的万年历 ###功能:从NTP网络时间服务器上获取当前时间,从聚合数据处获取阳历阴历时间.效果图如下. 一些初始化 //包含一下相关头文件 #include <Ardui ...

  2. python发短信sim800_玩转 ESP32 + Arduino (十八) 采用SIM800L发送短信和定位(基础知识)...

    一. 测试AT指令平台 普通的串口调试助手就可以调试 二. 有用的AT指令: 1. 查询类指令 AT命令 功能 正常返回 执行后的正常状态 异常处理 AT SIM800是否准备好,握手程序 OK 检查 ...

  3. 玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测

    一. 电容输入 touchRead(pin) 及电容输入中断touchAttachInterrupt(pin, TSR , threshold) ESP32专门提供了电容触摸传感器的功能, 共有T0, ...

  4. RK3399应用开发 | 基于u8g2驱动oled显示系统基本信息(时间、IP、CPU负载、CPU温度)

    文章目录 一.u8g2 二.编译测试 1. 拉取源码 2. 编译环境 3. 编译demo 4. 测试 三.应用开发 1. 界面初始化 2. 获取CPU温度并更新显示 3. 获取系统时间并更新显示 4. ...

  5. esp32外部中断_玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测...

    一. 电容输入 touchRead(pin) 及电容输入中断touchAttachInterrupt(pin, TSR , threshold) ESP32专门提供了电容触摸传感器的功能, 共有T0, ...

  6. pwrkey直接接地 sim7020_玩转 ESP32 + Arduino (十九) SIM800L调试(基于TTGO T-CALL)

    关于SIM800L 关于我使用的开发板LiLyGO T-CALL 这里我使用了一块开发板: LiLyGO T-CALL (SIM800L_AXP192_VERSION_20200327版本) 其git ...

  7. 【玩转ESP32】17、PWM调光

    系列文章: [玩转ESP32]1.开发环境搭建 [玩转ESP32]2.开发参考资料 [玩转ESP32]3.点亮LED,Blink,blink,blink [玩转ESP32]4.ESP32驱动DHT11 ...

  8. ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示

    ESP32基于Arduino框架下U8g2驱动I2C OLED时间显示

  9. arduino使用oled代码_Arduino提高篇04—U8g2库驱动OLED

    OLED显示屏的驱动库非常多,本篇介绍强大的U8g2库,通过使用U8g2库来驱动OLED屏. 1. U8g2库介绍 U8g2库是嵌入式设备单色图形库,支持非常多的嵌入式设备平台,如单片机,STM32, ...

最新文章

  1. [POI2009]KAM-Pebbles BZOJ1115 [ 待填坑 ] 博弈
  2. AlphaGo之后,DeepMind重磅推出AlphaFold:基因序列预测蛋白质结构
  3. Centos7安装时引导错误以及解决方案
  4. Linux bond6配置文件,Linux服务器网卡绑定bond配置(示例代码)
  5. iPhone 路径大全
  6. 第一台定制商用NAS存储服务器
  7. 易支付系统源码_刷脸支付系统源码,插件源码合作模式有哪些,采购源码需要注意什么...
  8. python安装poi第三方库_使用Python获取城市POI数据
  9. 14个阿里高管的研发管理实践和思考 | 凌云时刻
  10. J2EE学习总结(五)------用户登录界面设计
  11. 服装行业SCM供应链管理平台优化资源配置效率,促进企业提质增效
  12. 通信原理第三章:正弦波加窄带高斯噪声
  13. java面向对象笔记
  14. 各款浏览器对PDF插件的支持
  15. 上网本丢失F盘怎么恢复
  16. java 横向 打印出来_在双工模式下使用Java打印横向文档
  17. Log4j2的MDC详解
  18. ffmpeg当前版本mp4容器 支持G711修改
  19. FormulaR1C1是公式输入方法
  20. ERP的实施--把握三大计划

热门文章

  1. 互联网那么大,推荐五个能够直接访问的高质量外媒网站
  2. 关于 SQL 外键删除的问题
  3. OneNote 不能同步 出错E000006B blg5z
  4. Godaddy域名解析速度慢问题以及如何使用DNSPod解析解决
  5. 江苏大学计算机复试面试题库,2017年江苏大学计算机科学与通信工程学院885程序设计[专业硕士]考研题库...
  6. 领域驱动设计(DDD)-基础思想
  7. 学习linux 11
  8. 【Workbench + 命令流】非线性接触分析——过盈装配
  9. VS各个版本下载地址
  10. 微信管家源码自定义菜单失效