玩转 ESP32 + Arduino (八) U8G2驱动OLED

如题所述

第1个回答  2022-07-15
目前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库?

支持单片机平台:

再platformIO.ini中配置库

方法可以分为四大类:

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

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

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

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

例: 画圆动画 (4帧😂😂😂😂)

实例:

示例:下面例子,ascent是18

示例:下面例子,descent是-5

启用(1)或禁用(0)透明模式

U8g2支持三种绘制模式:

特点:

用法:

特点:

特点:

看例程里有无数条代表着各种屏幕的写好的U8g2初始化语句,选择适合的一条解除注释即可

我的ESP32 DEVKIT V1+SSD1306(IIC)是选择这个:

https://github.com/olikraus/u8g2/wiki/fntlistall

https://github.com/olikraus/u8g2/wiki/fntgrpiconic

示例: 显示所有iconic图标

https://github.com/olikraus/u8g2/wiki/fntgrpwqy

可以看到, 最小的字高12px, 最大的字高18px,如果想要更大的字,请取XBM格式字模

我使用了在线转换器:

https://convertio.co/zh/image-converter/?utm_source=chrome_extension

整个转换过程很简单, 转换好的XBM文件用记事本打开就能看到数组了, 感觉比传统的 Img2Lcd 或者 PCtoLCD2002 好用