跳转至

u8g2 - u8g2图形处理库

常量

常量 类型 解释
u8g2.DRAW_UPPER_RIGHT number 上右
u8g2.DRAW_UPPER_LEFT number 上左
u8g2.DRAW_LOWER_LEFT number 下左
u8g2.DRAW_LOWER_RIGHT number 下右
u8g2.DRAW_ALL number 全部
u8g2.BTN_BW0 number 文本周围没有边框
u8g2.BTN_BW1 number 文本周围的边框,1像素边框宽度
u8g2.BTN_BW2 number 文本周围的边框,2像素边框宽度
u8g2.BTN_BW3 number 文本周围的边框,3像素边框宽度
u8g2.BTN_SHADOW0 number 启用阴影,与框架无间隙
u8g2.BTN_SHADOW1 number 启用阴影,到帧的1像素间隙
u8g2.BTN_SHADOW2 number 启用阴影,到帧的2像素间隙
u8g2.BTN_INV number 反转文本
u8g2.BTN_HCENTER number 将文本置于框架内的中心,并将参考位置更改为文本的中心
u8g2.BTN_XFRAME number 在按钮周围绘制第二个1像素框

u8g2.begin(conf)

u8g2显示屏初始化

参数

传入值类型 解释
table conf 配置信息,详细配置看下面的例子

返回值

返回值类型 解释
int 正常初始化1,已经初始化过2,内存不够3,初始化失败返回4

例子

-- conf配置项说明
-- ic 字符串,主控芯片类型, 支持custom(自定义命令) ssd1306(默认) ssd1309 ssd1322 sh1106 sh1107 sh1108 st7567 uc1701 ssd1306_128x32
-- direction 数值,方向,可选0 90 180 270 默认0
-- mode 字符串,模式,可选i2c_sw:软件i2c i2c_hw:硬件i2c,spi_hw_4pin: 硬件spi
-- i2c_id: 数值,硬件i2c时有效
-- i2c_scl: 数值,软件i2c时时钟线的GPIO编号
-- i2c_sda: 数值软件i2c时数据线的GPIO编号
-- spi_id、spi_res、spi_dc、spi_cs: 数值,硬件spi的SPI编号,复位GPIO编号,DC线的GPIO编号, CS线的GPIO编号
-- x_offset: 数值,X轴偏移量,默认按驱动走, 2023.11.10新增的配置项

-- 初始化硬件i2c的ssd1306
u8g2.begin({ic = "ssd1306",direction = 0,mode="i2c_hw",i2c_id=0}) -- direction 可选0 90 180 270
-- 初始化硬件spi的ssd1306
u8g2.begin({ic = "ssd1306",direction = 0,mode="spi_hw_4pin",spi_id=0,spi_res=pin.PB03,spi_dc=pin.PB01,spi_cs=pin.PB04}) -- direction 可选0 90 180 270
-- 初始化软件i2c的ssd1306
u8g2.begin({ic = "ssd1306",direction = 0,mode="i2c_sw", i2c_scl=1, i2c_sda=4}) -- 通过PA1 SCL / PA4 SDA模拟

u8g2.close()

关闭显示屏

参数

返回值

例子

-- 关闭disp,再次使用disp相关API的话,需要重新初始化
u8g2.close()

u8g2.ClearBuffer()

清屏,清除内存帧缓冲区中的所有像素

参数

返回值

例子

-- 清屏
u8g2.ClearBuffer()

u8g2.SendBuffer()

将数据更新到屏幕,将存储器帧缓冲区的内容发送到显示器

参数

返回值

例子

-- 把显示数据更新到屏幕
u8g2.SendBuffer()

u8g2.DrawUTF8(str, x, y)

在显示屏上画一段文字,在显示屏上画一段文字,要调用u8g2.SendBuffer()才会更新到屏 注意:设置坐标为显示字符串左下角坐标

参数

传入值类型 解释
string 文件内容
int 横坐标
int 竖坐标

返回值

例子

u8g2.DrawUTF8("wifi is ready", 10, 20)

u8g2.DrawButtonUTF8(str, x, y, flags, w, h, v, str)

在提供的文本周围画一个框。这与 DrawUTF8 类似,但为文本添加了一些装饰。要调用u8g2.SendBuffer()才会更新到屏幕 注意:设置坐标为显示字符串左下角坐标

参数

传入值类型 解释
string 文件内容
int 横坐标
int 竖坐标
int 标志 多个标志可以与“或”运算符一起使用。
int 文本的最小宽度。如果为0(或低于文本宽度),则文本宽度将用于框架。
int 文本前后的额外空间。
int 文本上下的额外空间。

返回值

例子

u8g2.DrawButtonUTF8("str", 10, 20,u8g2.BTN_BW2,0,2,2)

u8g2.SetFontMode(mode)

设置字体模式

参数

传入值类型 解释
int mode字体模式,启用(1)或禁用(0)透明模式

返回值

例子

u8g2.SetFontMode(1)

u8g2.SetFont(font, indentation)

设置字体

参数

传入值类型 解释
userdata font, u8g2.font_opposansm8 为纯英文8号字体,还有font_opposansm10 font_opposansm12 font_opposansm16 font_opposansm18 font_opposansm20 font_opposansm22 font_opposansm24 font_opposansm32 可选 u8g2.font_opposansm12_chinese 为12x12全中文,还有 font_opposansm16_chinese font_opposansm24_chinese font_opposansm32_chinese 可选, u8g2.font_unifont_t_symbols 为符号.
int indentation, 等宽字体ascii右侧缩进0~127个pixel,等宽字体的ascii字符可能在右侧有大片空白,用户可以选择删除部分。留空或者超过127则直接删除右半边, 非等宽字体无效

返回值

例子

-- 设置为中文字体,对之后的drawStr有效
u8g2.SetFont(u8g2.font_opposansm12)

u8g2.GetDisplayHeight()

获取显示屏高度

参数

返回值

返回值类型 解释
int 显示屏高度

例子

u8g2.GetDisplayHeight()

u8g2.GetDisplayWidth()

获取显示屏宽度

参数

返回值

返回值类型 解释
int 显示屏宽度

例子

u8g2.GetDisplayWidth()

u8g2.SetDrawColor(c)

为所有绘图功能分配绘图颜色。

参数

传入值类型 解释
int c为颜色值 0没有色 1有色 2与底色xor

返回值

例子

u8g2.SetDrawColor(0)

u8g2.DrawPixel(x,y)

画一个点.

参数

传入值类型 解释
int X位置.
int Y位置.

返回值

例子

u8g2.DrawPixel(20, 5)

u8g2.DrawLine(x0,y0,x1,y1)

在两点之间画一条线.

参数

传入值类型 解释
int 第一个点的X位置.
int 第一个点的Y位置.
int 第二个点的X位置.
int 第二个点的Y位置.

返回值

例子

u8g2.DrawLine(20, 5, 5, 32)

u8g2.DrawCircle(x0,y0,rad,opt)

在x,y位置画一个半径为rad的空心圆.

参数

传入值类型 解释
int 圆心位置
int 圆心位置
int 圆半径.
int 选择圆的部分或全部. 默认全画 可选 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL

返回值

例子

u8g2.DrawCircle(60,30,8,u8g2.DRAW_ALL)

u8g2.DrawDisc(x0,y0,rad,opt)

在x,y位置画一个半径为rad的实心圆.

参数

传入值类型 解释
int 圆心位置
int 圆心位置
int 圆半径.
int 选择圆的部分或全部. 默认全画 可选 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL

返回值

例子

u8g2.DrawDisc(60,30,8,u8g2.DRAW_ALL)

u8g2.DrawEllipse(x0,y0,rx,ry,opt)

在x,y位置画一个半径为rad的空心椭圆.

参数

传入值类型 解释
int 圆心位置
int 圆心位置
int 椭圆大小
int 椭圆大小
int 选择圆的部分或全部. 默认全画 可选 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL

返回值

例子

u8g2.DrawEllipse(60,30,8,u8g2.DRAW_ALL)

u8g2.DrawFilledEllipse(x0,y0,rx,ry,opt)

在x,y位置画一个半径为rad的实心椭圆.

参数

传入值类型 解释
int 圆心位置
int 圆心位置
int 椭圆大小
int 椭圆大小
int 选择圆的部分或全部. 默认全画 可选 u8g2.DRAW_UPPER_RIGHT u8g2.DRAW_UPPER_LEFT u8g2.DRAW_LOWER_LEFT u8g2.DRAW_LOWER_RIGHT u8g2.DRAW_ALL

返回值

例子

u8g2.DrawFilledEllipse(60,30,8,15)

u8g2.DrawBox(x,y,w,h)

从x / y位置(左上边缘)开始绘制一个框(填充的框).

参数

传入值类型 解释
int 左上边缘的X位置
int 左上边缘的Y位置
int 盒子的宽度
int 盒子的高度

返回值

例子

u8g2.DrawBox(3,7,25,15)

u8g2.DrawFrame(x,y,w,h)

从x / y位置(左上边缘)开始绘制一个框(空框).

参数

传入值类型 解释
int 左上边缘的X位置
int 左上边缘的Y位置
int 盒子的宽度
int 盒子的高度

返回值

例子

u8g2.DrawFrame(3,7,25,15)

u8g2.DrawRBox(x,y,w,h,r)

绘制一个从x / y位置(左上边缘)开始具有圆形边缘的填充框/框架.

参数

传入值类型 解释
int 左上边缘的X位置
int 左上边缘的Y位置
int 盒子的宽度
int 盒子的高度
int 四个边缘的半径

返回值

例子

u8g2.DrawRBox(3,7,25,15)

u8g2.DrawRFrame(x,y,w,h,r)

绘制一个从x / y位置(左上边缘)开始具有圆形边缘的空框/框架.

参数

传入值类型 解释
int 左上边缘的X位置
int 左上边缘的Y位置
int 盒子的宽度
int 盒子的高度
int 四个边缘的半径

返回值

例子

u8g2.DrawRFrame(3,7,25,15)

u8g2.DrawGlyph(x,y,encoding)

绘制一个图形字符。字符放置在指定的像素位置x和y.

参数

传入值类型 解释
int 字符在显示屏上的位置
int 字符在显示屏上的位置
int 字符的Unicode值

返回值

例子

u8g2.SetFont(u8g2_font_unifont_t_symbols)
u8g2.DrawGlyph(5, 20, 0x2603)    -- dec 9731/hex 2603 Snowman

u8g2.DrawTriangle(x0,y0,x1,y1,x2,y2)

绘制一个三角形(实心多边形).

参数

传入值类型 解释
int 点0X位置
int 点0Y位置
int 点1X位置
int 点1Y位置
int 点2X位置
int 点2Y位置

返回值

例子

u8g2.DrawTriangle(20,5, 27,50, 5,32)

u8g2.SetBitmapMode(mode)

定义位图函数是否将写入背景色

参数

传入值类型 解释
int mode字体模式,启用(1)或禁用(0)透明模式

返回值

例子

u8g2.SetBitmapMode(1)

u8g2.DrawXBM(x, y, w, h, data)

绘制位图

参数

传入值类型 解释
int X坐标
int y坐标
int 位图宽
int 位图高
int 位图数据,每一位代表一个像素

返回值

例子

-- 取模使用PCtoLCD2002软件即可
-- 在(0,0)为左上角,绘制 16x16 "今" 的位图
u8g2.DrawXBM(0, 0, 16,16, string.char(
    0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,
    0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00
))

u8g2.DrawDrcode(x, y, str, size)

缓冲区绘制QRCode

参数

传入值类型 解释
int x坐标
int y坐标
string 二维码的内容
int 显示大小 (注意:二维码生成大小与要显示内容和纠错等级有关,生成版本为1-40(对应 21x21 - 177x177)的不定大小,如果和设置大小不同会自动在指定的区域中间显示二维码,如二维码未显示请查看日志提示)

返回值

返回值类型 解释
nil 无返回值

例子


u8g2.SetContrast(contrast)

调整屏幕对比度

参数

传入值类型 解释
int 对比度(取值范围与IC有关,如st7567为0-63)

返回值

返回值类型 解释
nil 无返回值

例子


u8g2.drawGtfontGb2312(str,size,x,y)

使用gtfont显示gb2312字符串

参数

传入值类型 解释
string str 显示字符串
int size 字体大小 (支持16-192号大小字体)
int x 横坐标
int y 竖坐标

返回值

例子

u8g2.drawGtfontGb2312("啊啊啊",32,0,0)

u8g2.drawGtfontUtf8(str,size,x,y)

使用gtfont显示UTF8字符串

参数

传入值类型 解释
string str 显示字符串
int size 字体大小 (支持16-192号大小字体)
int x 横坐标
int y 竖坐标

返回值

例子

u8g2.drawGtfontUtf8("啊啊啊",32,0,0)

u8g2.CopyBuffer(buff)

获取底层图像缓冲区

参数

传入值类型 解释
userdata zbuff实例,空间要大于等于底层buff的大小

返回值

返回值类型 解释
int 成功返回buff大小,否则返回nil

例子

-- 本函数在u8g2初始化之后才能调用

-- 获取大小
local sz = u8g2.CopyBuffer()

-- 拷贝底层buff
local buff = zbuff.create(sz)
u8g2.CopyBuffer(buff)

u8g2.SetPowerSave(is_enable)

设置省电模式

参数

传入值类型 解释
boolean 启用与否. true 启用, false禁用

返回值

返回值类型 解释
nil 无返回值

例子

-- 本API于2023.11.02新增
-- 开启省电
u8g2.SetPowerSave(true)
-- 关闭省电
u8g2.SetPowerSave(false)