arduinou8g2
时间: 2025-01-09 14:48:42 浏览: 12
Arduino U8g2 库的使用方法与示例
添加库文件并配置环境
为了使 myfont.c
中能够正常工作,需添加声明 "u8g2.h"
并将其复制到 Arduino\libraries\U8g2\src\clib
文件夹下[^1]。
初始化设置
当利用 u8g2 库来驱动 OLED 屏幕时,可以采用 I2C 或 SPI 接口进行通信。对于基于 SSD1306 的 0.96 寸 128×64 像素 OLED 显示屏而言,在初始化过程中需要引入特定头文件:
#include <Wire.h>
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_SSD1306.h>// Hardware-specific library for SSD1306 displays
创建显示屏对象实例化语句如下所示:
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64// OLED display height, in pixels
Adafruit_SSD1306 oledDisplay(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
示例代码展示 Hello World 字符串
下面给出一段完整的用于显示 "Hello World!" 文本字符串的例子,该例子适用于全缓冲模式下的 I2C 总线连接方式[^4]:
void setup() {
if(!oledDisplay.begin(SSD1306_SWITCHCAPVCC)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Don't proceed, loop forever
}
oledDisplay.clearDisplay();
}
void loop(){
oledDisplay.setTextSize(1); // Normal 1:1 pixel scale
oledDisplay.setTextColor(SSD1306_WHITE); // Draw white text
oledDisplay.setCursor(0,0); // Start at top-left corner
oledDisplay.cp437(true); // Use full 256 char 'Code Page 437' font
oledDisplay.println("Hello world!");
oledDisplay.display(); // Show initial text
}
此段代码实现了基本的文字输出功能,并且可以通过调整参数来自定义字体大小、颜色以及位置等属性。
使用 PrintUTF8 方法打印中文字符
针对想要在屏幕上呈现多语言文字的情况,比如中文字符,则可借助于 PrintUTF8()
函数实现。这里提供了一个简单的案例说明如何调用这个函数完成汉字渲染的任务[^5]:
void drawChineseText(U8G2 *u8g2){
const uint8_t* utf8str = (const uint8_t*)"你好"; // UTF-8 encoded string
int16_t x=0,y=0;
u8g2->setFont(u8g2_font_wqy12_t_gb2312a); // Set Chinese font
while(*utf8str != '\0'){
u8g2_DrawStr(u8g2,x,y,(char*)utf8str);
utf8str += u8g2_GetStrWidth(u8g2,(char*)utf8str)+1;
}
}
上述片段展示了怎样加载指定编码格式(GB2312A)中的中文字体资源,并逐个绘制每一个字符直至遇到终止符为止。
相关推荐











