U8g2:一个功能强大、易于使用的Arduino单色显示屏库

文摘   2024-11-04 00:01   湖南  

U8g2 是一个功能强大、使用便捷的开源图形库,它支持多种常见的单色 OLED、LCD 和字符型显示器,并提供了丰富的绘图和文字显示功能。U8g2 的设计理念是: 在兼顾性能的前提下,尽可能简化使用,让开发者能够快速上手,轻松实现各种显示效果。

U8g2 的优势

  • • 跨平台兼容性: U8g2 支持多种平台,包括 Arduino、ESP32、STM32等。

  • • 广泛的显示器支持: U8g2 支持超过 40 种常见的单色显示器,包括 SSD1306、SSD1318、SH1106、T6963、PCD8544 等等。

  • • 强大的绘图功能: U8g2 提供了绘制线条、矩形、圆形、椭圆、三角形、填充图形等功能,满足各种图形显示需求。

  • • 丰富的字体支持: U8g2 自带多种字体,并允许用户自定义字体,满足不同显示场景的文字排版需求。

  • • 简单易用: U8g2 提供简洁的 API,让开发者能够快速上手,轻松使用其功能。


U8g2 的核心概念

U8g2 提供两种库:U8g2 和 U8x8。

U8g2

  • • 包含完整的图形绘制功能。

  • • 支持多种字体,且对字体高度几乎没有限制。

  • • 需要在微控制器中预留一定内存来渲染显示内容。

U8x8

  • • 仅支持字符输出。

  • • 只能使用 8x8 像素网格内的字体。

  • • 直接将数据写入显示器,无需在微控制器中预留内存。


U8g2 入门指南

1. 安装 U8g2 库

使用 Arduino IDE 的库管理器搜索并安装 "U8g2" 库,即可使用 U8g2 的全部功能。

2. 初始化显示器

在程序中,首先需要初始化显示器。以下代码示例以 SSD1306 显示器为例:

#include <U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL, /* data=*/ SDA, /* cs=*/ U8X8_PIN_NONE);

void setup() {
  u8g2.begin();
}

3. 绘制图形

U8g2 提供多种图形绘制函数,例如:

  • • drawLine():绘制直线

  • • drawBox():绘制矩形

  • • drawCircle():绘制圆形

  • • drawTriangle():绘制三角形

  • • fillRect():填充矩形

例如,以下代码绘制一条水平线:

u8g2.drawLine(102011020);

4. 显示文字

U8g2 支持多种字体,您可以使用 setFont() 函数选择合适的字体,然后使用 drawString() 函数显示文字。

例如,以下代码在显示器中央显示 "Hello, World!":

u8g2.setFont(u8g2_font_open_sans_10_tr);
u8g2.drawString("Hello, World!"3232);

5. 更新显示

在绘制完图形或文字后,需要调用 sendBuffer() 函数将缓冲区内容更新到显示器。

u8g2.sendBuffer();

案例:模拟温度计

以下示例使用 U8g2 库实现一个简单的模拟温度计:

#include <U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL, /* data=*/ SDA, /* cs=*/ U8X8_PIN_NONE);

int temperature =25;

void setup() {
  u8g2.begin();
  u8g2.setFont(u8g2_font_open_sans_10_tr);
}

void loop() {
  u8g2.clearBuffer();// 清除缓冲区
  u8g2.drawFrame(10,10,100,50);// 绘制外框
  u8g2.drawLine(10,60,10,10+ temperature *2);// 绘制温度指示线
  u8g2.drawString("温度:",10,70);
  u8g2.setCursor(60,70);
  u8g2.print(temperature);
  u8g2.print("℃");
  u8g2.sendBuffer();// 更新显示
delay(1000);
}

结语

U8g2 图形库的强大功能和易用性,让嵌入式开发更加便捷。使用 U8g2,开发者可以轻松地在各种单色显示器上实现丰富多彩的显示效果,为物联网应用增添生机。

项目地址:https://github.com/olikraus/u8g2


DIY太阳系
分享嵌入式系统知识,写精华文章!
 最新文章