
ESP32 接 LCD 顯示繁體中文
ESP32 接 LCD 顯示繁體中文,可以使用 UTF-8 字型庫 或 字型圖片 方式來處理。以下提供幾種常見方法:
方法 1:使用 U8g2
圖形庫(適用於 OLED / LCD)
U8g2
是一個強大的 Arduino 庫,支援繁體中文顯示,適用於 OLED 和 部分 LCD(如 SH1106、ST7565 等)。
🔹 安裝 U8g2
- 在 Arduino IDE,打開 庫管理員(Library Manager)
- 搜尋 “U8g2”,安裝 “U8g2 by olikraus”
🔹 連接 ESP32 和 LCD(以 I2C OLED 為例)
LCD Pin | ESP32 Pin |
---|---|
VCC | 3.3V |
GND | GND |
SDA | GPIO21 |
SCL | GPIO22 |
🔹 顯示繁體中文
U8g2 支援 字庫(Font),可以使用 u8g2.setFont(u8g2_font_unifont_t_chinese2)
顯示中文。
範例程式
#include <Wire.h> #include <U8g2lib.h> // 初始化 U8g2 (以 SSD1306 I2C OLED 為例) U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); void setup() { u8g2.begin(); u8g2.enableUTF8Print(); // 啟用 UTF-8 支援 } void loop() { u8g2.clearBuffer(); u8g2.setFont(u8g2_font_unifont_t_chinese2); // 設定中文字型 u8g2.drawUTF8(0, 24, "繁體中文測試"); u8g2.sendBuffer(); delay(2000); }
📌 優點:不需額外字庫,可以直接顯示繁體中文。
📌 缺點:僅支援內建字庫,部分字可能無法顯示。
方法 2:使用 TFT_eSPI
庫(適用於 TFT LCD)
如果使用的是 TFT LCD(如 ST7735、ILI9341),可以用 TFT_eSPI
。
🔹 安裝 TFT_eSPI
- 打開 Arduino IDE
- 進入 庫管理員(Library Manager)
- 搜尋 “TFT_eSPI”,安裝 TFT_eSPI by Bodmer
- 在
TFT_eSPI
設定檔(User_Setup.h
)修改螢幕型號和接腳
🔹 使用字型圖片顯示繁體中文
- 轉換中文為圖片字庫(可使用 LCD Image Converter 或 Online Tools)
- 載入字庫並繪製字元
範例程式
#include <TFT_eSPI.h> TFT_eSPI tft = TFT_eSPI(); void setup() { tft.init(); tft.setRotation(1); tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE); tft.loadFont("TaipeiSansTC"); // 使用繁體字型 tft.drawString("你好,世界!", 10, 10); } void loop() { }
📌 優點:可以使用高解析度字型,支援所有繁體字
📌 缺點:需要轉換字型,佔用較多記憶體
方法 3:使用 Unicode 字型(最通用)
如果 LCD 控制器支援 Unicode 或 Bitmap 字庫,可以使用 lvgl
來顯示繁體中文。
🔹 安裝 LVGL(Light and Versatile Graphics Library)
- 在 Arduino IDE 安裝 LVGL 庫
- 使用
.ttf
字型轉換工具,將繁體中文字型嵌入程式
範例程式
#include "lvgl.h" #include "TFT_eSPI.h" TFT_eSPI tft = TFT_eSPI(); void setup() { lv_init(); tft.init(); tft.setRotation(1); lv_obj_t *label = lv_label_create(lv_scr_act()); lv_label_set_text(label, "繁體中文測試"); lv_obj_align(label, LV_ALIGN_CENTER, 0, 0); } void loop() { lv_task_handler(); delay(5); }
📌 優點:適合複雜 GUI 應用,如 觸控面板、HMI
📌 缺點:設定較複雜,需額外配置字型
結論
方法 | 適用硬體 | 特點 | 難易度 |
---|---|---|---|
U8g2 | OLED / 單色 LCD | 內建中文字型,安裝簡單 | ⭐⭐ |
TFT_eSPI | TFT LCD(ILI9341, ST7735) | 高畫質,需字型轉換 | ⭐⭐⭐ |
LVGL | 高階 GUI(ESP32 Touch) | 最強大,但設定較難 | ⭐⭐⭐⭐ |
如果你是 初學者,建議從 U8g2 開始!🚀