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);
}
沒有留言:
張貼留言