一、常用API
U8g2库提供了丰富的API,用于控制各种显示器并在屏幕上绘制文本、图形等元素。以下是U8g2库中一些常用的API:
1. 初始化-------U8G2
U8G2(display, rotation, [,reset [, clock, data, cs, dc, reset, cs1, cs2, cs3]])
初始化U8g2对象,其中display表示所使用的显示器型号,rotation表示显示器的旋转方向,其他参数是可选的,包括复位引脚、时钟引脚、数据引脚等。
2. 字体设置
u8g2.setFont(font)
设置当前使用的字体,font是一个字体对象,例如:u8g2_font_ncenB14_tr。
3. 显示文本
drawStr(x, y, str)
u8g2.drawStr(x, y, str)
在指定位置(x, y)上绘制字符串str。
4. 绘制图像
drawXBM(x, y, width, height, bitmap)
u8g2.drawXBM(x, y, width, height, bitmap)
在指定位置(x, y)上绘制X BitMap(XBM)格式的图像,width和height是图像的宽度和高度,bitmap是存储图像数据的数组。
5. 画线
drawLine(x1, y1, x2, y2)
u8g2.drawLine(x1, y1, x2, y2)
在屏幕上绘制一条直线,起始点为(x1, y1),终止点为(x2, y2)。
6. 画矩形
drawFrame(x, y, width, height)
u8g2.drawFrame(x, y, width, height)
在指定位置(x, y)上绘制一个矩形,width和height分别为矩形的宽度和高度。
7. 清屏
clearBuffer()
u8g2.clearBuffer()
清空绘图缓冲区,但不清空屏幕。
8. 刷新显示
sendBuffer()
u8g2.sendBuffer()
将绘图缓冲区的内容发送到屏幕,刷新显示。
9. 滚动
firstPage(), nextPage()
u8g2.firstPage();
do {
// 在这里添加你的显示内容
u8g2.setFont(u8g2_font_ncenB08_tr); // 设置字体
u8g2.drawStr(0, 10, "Hello, U8g2!"); // 在指定位置绘制文本
} while (u8g2.nextPage());
firstPage用于开始绘制多页内容,nextPage用于切换到下一页,这两个函数通常一起使用。
以上仅是U8g2库中一些常用的API,实际上库提供了更多的函数和选项,以满足不同场景下的需求。在使用时,可以参考U8g2库的文档和示例代码,深入了解每个函数的参数和用法。
二、使用 u8g2 的流程 & 简单例程
步骤1:安装U8g2库
在Arduino IDE中,打开“工具”菜单,选择“管理库”,搜索U8g2并安装。
步骤2:包含U8g2头文件
在你的Arduino项目中包含U8g2库的头文件:#include <U8g2lib.h>
步骤3:初始化显示器
选择你使用的显示器类型,并进行初始化。例如,如果你使用的是SSD1306 OLED屏,初始化代码如下:
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
注意:你会看到 U8G2_SSD1306_128X64_NONAME_F_HW_I2C 的构造函数中没有明确指定SDA和SCL引脚,这是因为U8g2库默认使用了硬件I2C,并且根据不同的硬件平台,会自动使用默认的I2C引脚。例如,ESP32上的默认硬件I2C引脚为SDA:21,SCL:22。
如果你有特殊要求需要使用其他引脚,你可以在构造函数中指定具体的引脚,例如:
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 22, /* data=*/ 21);
在这个例子中,clock 对应SCL引脚,data 对应SDA引脚。
步骤4:使用U8g2库函数进行屏幕操作
通过U8g2库的函数,你可以在显示器上绘制文本、图形等。例如,显示“Hello, Arduino!”的代码如下:
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0, 20, "Hello, Arduino!");
步骤5:刷新显示
最后,使用下面的代码刷新显示:
u8g2.sendBuffer();
完整简单例程如下:
#include <U8g2lib.h>
// 使用 U8g2库 创建 OLED 对象
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//如果不使用默认的 SCL、SDA,请使用如下函数
//U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 22, /* data=*/ 21);
void setup() {
// 初始化 OLED 对象
u8g2.begin();
}
void loop() {
// 清空显示屏内容
u8g2.clearBuffer();
// 添加文本
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.drawStr(0, 10, "Hello, ESP32!");
// 延时一段时间
delay(1000);
}
标签:u8g2,U8g2,引脚,esp32,为例,U8G2,I2C,SSD1306 From: https://www.cnblogs.com/FBsharl/p/18246366