编辑
2021-11-15
浅尝嵌入式开发
00
请注意,本文编写于 686 天前,最后修改于 47 天前,其中某些信息可能已经过时。

目录

下载U8g2 Library
U8g2使用步骤
U8g2初始化
U8g2 API 参考
U8g2 Demo

U8g2是嵌入式设备的单色图形库,主要应用于嵌入式平台,如Arduino、STM32。几乎所有Arduino API的主板都得到U8g2的支持,U8g2支持大多数主流的单色OLED和LCD显示控制器 。上图是ESP8266 NodeMCU通过U8g2在SSD1306(0.96寸 128X64)展示出的效果,物理总线使用的是I2C总线。

下载U8g2 Library

如果用的是platformio平台的话,直接搜这个库即可:

platformio.ini:

ini
lib_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

cpp
#include <Arduino.h> #include <U8g2lib.h> #include <Wire.h> // Full screen buffer mode 全屏缓存模式 U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, D1, D2); void setup() { u8g2.begin(); // 支持UTF-8 u8g2.enableUTF8Print(); // 支持中文 u8g2.setFont(u8g2_font_unifont_t_chinese2); u8g2.setFontDirection(0); Serial.begin(9600); } int i = 0; void loop() { Serial.println(i); // 绘制文字 u8g2.clearBuffer(); u8g2.setCursor(4, 15); u8g2.print("Hello World!"); u8g2.setCursor(4, 35); u8g2.print("你好世界"); // 重置光标位置到0,0 u8g2.home(); // 绘制屏幕边框 u8g2.drawFrame(0, 0, 128, 64); // 绘制圆弧 u8g2.home(); if(i == 0) { u8g2.drawCircle(80, 30, 7, U8G2_DRAW_UPPER_LEFT); }else if(i == 1) { u8g2.drawCircle(80, 30, 7, U8G2_DRAW_UPPER_RIGHT); }else if(i == 2) { u8g2.drawCircle(80, 30, 7, U8G2_DRAW_LOWER_RIGHT); }else if(i == 3) { u8g2.drawCircle(80, 30, 7, U8G2_DRAW_LOWER_LEFT); } // 绘制正在充电电池图标 u8g2.home(); u8g2.drawFrame(90, 50, 20, 10); u8g2.home(); u8g2.drawFrame(88, 54, 2, 4); u8g2.home(); if(i == 0) { u8g2.drawBox(105, 50, 5, 10); }else if(i == 1) { u8g2.drawBox(100, 50, 10, 10); }else if(i == 2) { u8g2.drawBox(95, 50, 15, 10); }else if(i == 3) { u8g2.drawBox(90, 50, 20, 10); } i = (i+1)%4; u8g2.sendBuffer(); delay(100); }

都是API,参考官方文档即可!

https://github.com/olikraus/u8g2/wiki/u8g2reference 【Github】

https://github.com/olikraus/u8g2/wiki/u8g2reference 【Github MirrorFast】

本文作者:Tim

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!