U8g2程式庫提供的字型幾乎沒有中文字,如果需要在OLED中顯示中文那就必須要自建字庫。
要在OLED中顯示中文的字庫建立步驟如下:
1.將要顯示的中文字先轉成 Unicode 編碼。例如中文字為「昱得資訊工作室」轉換如下:
\u6631\u5f97\u8cc7\u8a0a\u5de5\u4f5c\u5ba4
2.將 Unicode 編碼後的右斜符號與u小寫字母 \u 置換成錢字號 $。每個字並以逗號 , 隔開。
$6631,$5f97,$8cc7,$8a0a,$5de5,$4f5c,$5ba43.取得U8g2程式庫提供的「bdfconv.exe」程式與字體檔案(unifont.bdf)。
「bdfconv.exe」下載位置在 這裡。
字體檔案(unifont.bdf)下載位置在 這裡。
4.將「bdfconv.exe」程式與字體檔案(unifont.bdf)放在同一路徑下。
5.打開 命令提示字元 視窗,利用「bdfconv.exe」程式與字體檔案(unifont.bdf)來產生中文字的點陣字體矩陣資料,語法如下:
bdfconv unifont.bdf -b 0 -f 1 -m "中文字編碼字串內容" -d unifont.bdf -n 字型名稱 -o 字型輸出檔案名稱本例為:
bdfconv unifont.bdf -b 0 -f 1 -m "$6631,$5f97,$8cc7,$8a0a,$5de5,$4f5c,$5ba4" -d unifont.bdf -n myFont -o myFont.h
6.將新建的字型檔案(本例為 myFont.h)複製到開發專案相同路徑中備用。
接腳設定
1. 電源接線:
【ESP32】3.3V →【OLED】VCC
【ESP32】GND →【OLED】GND
2. 信號接線:
【ESP32】22→【ESP-01】SCL
【ESP32】21→【ESP-01】SDA
撰寫實驗程式如下:
#include <U8g2lib.h>//引入程式庫 #include "myFont.h" //引入中文字陣列資料 //U8G2_R2為顯示器翻轉180度顯示 U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R2, U8X8_PIN_NONE); int x1=127; //初始繪製上字串的X座標位置 int x2=-127; //初始繪製下字串的X座標位置 void setup() { u8g2.begin(); u8g2.setFont(myFont); // 使用自訂的中文字型 u8g2.enableUTF8Print(); // 啟用顯示UTF-8 編碼功能 } void loop() { u8g2.firstPage(); do { u8g2.setCursor(x1+10, 20); u8g2.print("昱得資訊工作室"); u8g2.setCursor(x2-10, 62); u8g2.print("室作工訊資得昱"); } while ( u8g2.nextPage() ); x1=x1-1; if(x1<=-127) {x1=127;}; x2=x2+1; if(x2>=127) {x2=-127;}; delay(10); }
沒有留言:
張貼留言