128X64 1.3 인치 LCD  (SH1106 I2C) 모듈에 u8g2의 한글폰트 사용해서 한글 출력해보자.

간편하지만 폰트의 사이즈가 커서 공간을 많이 차지하는 단점이 있다.

그래서 옛날 도스 시절에 사용하던 조합형 한글폰트를 사용하는 방법을 찾아보아야겠다.

#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

void setup(void) {
  u8g2.begin();
  u8g2.enableUTF8Print();		// enable UTF8 support for the Arduino print() function
}

void loop(void) {
  u8g2.setFont(u8g2_font_unifont_t_korean2); //2026-2-4 u8g2_font_unifont_t_korean1 -> u8g2_font_unifont_t_korean2   
  u8g2.setFontDirection(0);
  u8g2.firstPage();
  do {
    u8g2.setCursor(0,15);
    u8g2.print("Hello World!");
    u8g2.setCursor(0, 31);
    u8g2.print("안녕 세상");
    u8g2.setCursor(0, 44);
    u8g2.print("3번 라인");
    u8g2.setCursor(0, 60);
    u8g2.print("넷번째 줄");
  } while ( u8g2.nextPage() );
  delay(1000);
}

 

 

참고 블로그 글 : https://blog.naver.com/PostView.naver?blogId=hehevnt&logNo=222789933818

u8g2_font_unifont_t_korean1 의 메모리 사용

스케치는 프로그램 저장 공간 285585 바이트(27%)를 사용. 최대 1044464 바이트.

전역 변수는 동적 메모리 29856바이트(36%)를 사용, 52064바이트의 지역변수가 남음.

u8g2_font_unifont_t_korean2 의 메모리 사용

스케치는 프로그램 저장 공간 341873 바이트(32%)를 사용. 최대 1044464 바이트.

전역 변수는 동적 메모리 29856바이트(36%)를 사용, 52064바이트의 지역변수가 남음.

u8g2_font_unifont_t_korean1폰트는 없는 글자가 좀 많음

u8g2.print() 에서 사용을 하려면

u8g2.enableUTF8Print();

설정을 해주어야 한글이 나온다. (안하면. 영문 숫자는 나오지만 한글은 안나옴)

u8g2.enableUTF8Print(); 해도 drawStr() 함수에서는 한글이 출력 되지 않는다.

728x90

+ Recent posts