본문 바로가기

프로젝트/TFT LCD 한글 출력 (아두이노)

필요한 폰트를 메모리에 두지 말고 파일에 담아 사용하자.

필요한 폰트를  파일에 담아 사용하기 위해서는 

아두이노 한글 폰트 Code 자동생성 프로그램 ver 2.0에 다음과 같은 폰트 파일을 

추가로 생성하게 해야 한다. (  Font.utf )

  필드 1 필드2
36Byte 한글코드 4byte 폰트  (unsigned short  2byte ) *16 =  32byte

 

출력을 위하여 Hangul_Direct.H를 수정하여 Hangul_SelectSD.H를 제작 한다.

출력할 문자를 폰트파일의 한글코드와 비교하여 폰트를 찾는 것으로 수정 하면 된다.

기존  _memFont( long code) 를  _sdFont( long cod)로 수정 한다.

기존 함수  memFont( long code)
bool HanGul_TFT::_memFont( long code )
{
  int size=sizeof(font) /sizeof(Font);
 
  for( int f=0; f < size; f++)
  {
      long hcode =byte(font[f].s[0]);      // 3Byte 문자(UTF-8)      
      hcode = hcode << 8;    // 상위 Byte에서 하위byte로 읽어오기  
      hcode+=byte(font[f].s[1]);              
      hcode = hcode << 8;
      hcode+=byte(font[f].s[2]);        

      if( hcode == code )
      {
          Serial.println( "find" );
          for(int i=0;i<16;i++) _HANGUL_FONT[i]=font[f].f[i];
          return true;
      }
  }
  return (false);
}
 
 수정후 함수 _sdFont( long cod)
 
bool HanGul_TFT::_sdFont( long code )
{
   long  idx=0 , hCode;

 
 while(  _sdFile.availabe()  )                    
  {    
       _sdFile.seek(idx);
      
       _sdFile.read( &hCode,4);
      
      if(  hCode  == code )
      {
          _sdFile.seek(idx+4);
          _sdFile.read( font , 32);
          return true;
      }
      idx+=36;
  }
  return (false);
}