U8g2单色显示图形库
U8g2是嵌入式设备的单色图形库,主要应用于嵌入式平台,如Arduino、STM32。几乎所有Arduino API的主板都得到U8g2的支持,U8g2支持大多数主流的单色OLED和LCD显示控制器 。上图是ESP8266 NodeMCU通过U8g2在SSD1306(0.96寸 128X64)展示出的效果,物理总线使用的是I2C总线。
下载U8g2 Library
如果用的是platformio平台的话,直接搜这个库即可:
platformio.ini:
1lib_deps = olikraus/U8g2@^2.28.8
如果是ArduinoIDE平台的话,直接用库管理器添加即可。
U8g2使用步骤
图像信息是通过物理总线方式发给OLED显示器, 具体的OLED使用什么物理总线,需要查阅各自的数据手册。比如,SSD1306就是I2C总线。
U8g2初始化
初始化可以参考 https://github.com/olikraus/u8g2/wiki/u8g2setupcpp/
U8g2 API 参考
https://github.com/olikraus/u8g2/wiki/u8g2reference
U8g2 Demo
1#include <Arduino.h>
2#include <U8g2lib.h>
3#include <Wire.h>
4
5// Full screen buffer mode 全屏缓存模式
6U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, D1, D2);
7
8void setup() {
9 u8g2.begin();
10 // 支持UTF-8
11 u8g2.enableUTF8Print();
12 // 支持中文
13 u8g2.setFont(u8g2_font_unifont_t_chinese2);
14 u8g2.setFontDirection(0);
15
16 Serial.begin(9600);
17}
18
19int i = 0;
20
21void loop() {
22 Serial.println(i);
23 // 绘制文字
24 u8g2.clearBuffer();
25 u8g2.setCursor(4, 15);
26 u8g2.print("Hello World!");
27 u8g2.setCursor(4, 35);
28
29 u8g2.print("你好世界");
30
31
32 // 重置光标位置到0,0
33 u8g2.home();
34 // 绘制屏幕边框
35 u8g2.drawFrame(0, 0, 128, 64);
36
37 // 绘制圆弧
38 u8g2.home();
39 if(i == 0) {
40 u8g2.drawCircle(80, 30, 7, U8G2_DRAW_UPPER_LEFT);
41 }else if(i == 1) {
42 u8g2.drawCircle(80, 30, 7, U8G2_DRAW_UPPER_RIGHT);
43 }else if(i == 2) {
44 u8g2.drawCircle(80, 30, 7, U8G2_DRAW_LOWER_RIGHT);
45 }else if(i == 3) {
46 u8g2.drawCircle(80, 30, 7, U8G2_DRAW_LOWER_LEFT);
47 }
48
49 // 绘制正在充电电池图标
50 u8g2.home();
51 u8g2.drawFrame(90, 50, 20, 10);
52 u8g2.home();
53 u8g2.drawFrame(88, 54, 2, 4);
54 u8g2.home();
55 if(i == 0) {
56 u8g2.drawBox(105, 50, 5, 10);
57 }else if(i == 1) {
58 u8g2.drawBox(100, 50, 10, 10);
59 }else if(i == 2) {
60 u8g2.drawBox(95, 50, 15, 10);
61 }else if(i == 3) {
62 u8g2.drawBox(90, 50, 20, 10);
63 }
64 i = (i+1)%4;
65 u8g2.sendBuffer();
66 delay(100);
67}
都是API,参考官方文档即可!
https://github.com/olikraus/u8g2/wiki/u8g2reference 【Github】
https://github.com/olikraus/u8g2/wiki/u8g2reference 【Github MirrorFast】