아두이노 한글 폰트 Code 자동생성 프로그램 ver 2.0 으로 폰트를 만들어 아두이노 소스코드에 삽입한 후 한글을 출력하는 한글 Class
sd카드와 별도의 폰트파일이 필요 없다. 필요에 따라 16x16 폰트 에디터로 만든 사용자 문자도 사용 가능 하다.
아두이노 코드에서 사용 하는 예 사용 보드는 아두이노 mega ( Uno는 20~30자가 메모리 한계임)
코드 내부의 글자도 메모리를 잡아 먹는다. 그래서 F연산자로 플래쉬메모리(코드저장부분) 저장 하지만그래도 한계가 있다. Uno의 경우는 더 심하다. 코드내에 글자수가 많아 지면 담을 수 있는 폰트도 많이 줄어 버린다.이경우를 해결하기 위하여 코드안의 문장을 파일로 저장하고 출력 직전에 불러 오는 방식을 사용 하려고 한다.문제는 문장을 쓰는 SD.prinln()은 있지만 문장을 읽어 오는 함수가 없어 엄청 불편 해 진다.그래서 아래 코드에 주석 처리된 String readLine( File inf ) 함수를 만들었다.
Hangul_Direct.ino | |
// --- 폰트 만들기 2.0 으로 만든 코드입니다. ----- struct Font // 폰트구조체 { String s; // 폰트글자 unsigned short f[16]; // 폰트 }; Font font[]={ "우", {0x0000, 0x03E0, 0x0C18, 0x1004, 0x1004, 0x0C18, 0x03E0, 0x0000, 0x3FFE, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0000 } , "연", {0x0000, 0x0E08, 0x1178, 0x2088, 0x2088, 0x2088, 0x1178, 0x0E08, 0x0008, 0x0008, 0x0008, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "히", {0x0000, 0x1F08, 0x0008, 0x0008, 0x7FC8, 0x0008, 0x0E08, 0x1108, 0x2088, 0x2088, 0x2088, 0x1108, 0x0E08, 0x0008, 0x0008, 0x0000 } , "날", {0x0000, 0x2008, 0x2008, 0x2008, 0x200E, 0x2008, 0x2068, 0x1F88, 0x0000, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "찾", {0x0000, 0x1F08, 0x0008, 0x7FC8, 0x040E, 0x0408, 0x0A08, 0x1108, 0x60C8, 0x0000, 0x1FF8, 0x0080, 0x0140, 0x0630, 0x180C, 0x0000 } , "아", {0x0000, 0x0008, 0x0E08, 0x1108, 0x1108, 0x2088, 0x208E, 0x2088, 0x2088, 0x2088, 0x1108, 0x1108, 0x0E08, 0x0008, 0x0008, 0x0000 } , "와", {0x0000, 0x0008, 0x0E08, 0x1108, 0x2088, 0x2088, 0x2088, 0x110E, 0x0E08, 0x0408, 0x0408, 0x0408, 0x7FE8, 0x0008, 0x0008, 0x0000 } , "사", {0x0000, 0x0008, 0x0408, 0x0408, 0x0408, 0x0408, 0x040E, 0x0A08, 0x0A08, 0x1108, 0x1108, 0x2088, 0x4048, 0x0008, 0x0008, 0x0000 } , "랑", {0x0000, 0x3F88, 0x0048, 0x0048, 0x1F8E, 0x2008, 0x2038, 0x1FC8, 0x0008, 0x03C0, 0x0C30, 0x1008, 0x1008, 0x0C30, 0x03C0, 0x0000 } , "만", {0x0000, 0x3F88, 0x2088, 0x2088, 0x2088, 0x208E, 0x2088, 0x2088, 0x3F88, 0x0008, 0x0008, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "남", {0x0000, 0x2008, 0x2008, 0x2008, 0x200E, 0x2008, 0x2068, 0x1F88, 0x0008, 0x0000, 0x1FF8, 0x1008, 0x1008, 0x1008, 0x0FF0, 0x0000 } , "기", {0x0000, 0x0008, 0x3F08, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0108, 0x0108, 0x0208, 0x0C08, 0x7008, 0x0008, 0x0008, 0x0000 } , "고", {0x0000, 0x0000, 0x1FF8, 0x0004, 0x0004, 0x0004, 0x0004, 0x0104, 0x0104, 0x0108, 0x0108, 0x0108, 0x0100, 0x3FFE, 0x0000, 0x0000 } , "간", {0x0000, 0x3F08, 0x0088, 0x0088, 0x0088, 0x008E, 0x0108, 0x0208, 0x0C08, 0x7008, 0x0008, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "너", {0x0000, 0x0008, 0x2008, 0x2008, 0x2008, 0x20F8, 0x2008, 0x2008, 0x2008, 0x2008, 0x2068, 0x1F88, 0x0008, 0x0008, 0x0008, 0x0000 } , "하", {0x0000, 0x1F08, 0x0008, 0x0008, 0x7FC8, 0x0008, 0x0E0E, 0x1108, 0x2088, 0x2088, 0x2088, 0x1108, 0x0E08, 0x0008, 0x0008, 0x0000 } , "루", {0x0000, 0x1FF8, 0x0004, 0x0FF8, 0x1000, 0x1000, 0x0FFC, 0x0000, 0x3FFE, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0000 } , "가", {0x0000, 0x0008, 0x3F08, 0x0088, 0x0088, 0x0088, 0x008E, 0x0088, 0x0108, 0x0108, 0x0208, 0x0C08, 0x7008, 0x0008, 0x0008, 0x0000 } , "지", {0x0000, 0x0008, 0x3FC8, 0x0408, 0x0408, 0x0408, 0x0408, 0x0A08, 0x0908, 0x1088, 0x1088, 0x2048, 0x4048, 0x0008, 0x0008, 0x0000 } , "나", {0x0000, 0x0008, 0x2008, 0x2008, 0x2008, 0x2008, 0x200E, 0x2008, 0x2008, 0x2008, 0x2068, 0x1F88, 0x0008, 0x0008, 0x0008, 0x0000 } , "몇", {0x0000, 0x3F88, 0x20F8, 0x2088, 0x2088, 0x20F8, 0x2088, 0x3F88, 0x0008, 0x07E0, 0x0000, 0x1FF8, 0x0180, 0x0660, 0x381C, 0x0000 } , "해", {0x0000, 0x1E24, 0x0024, 0x0024, 0x7FA4, 0x0024, 0x0C24, 0x123C, 0x2124, 0x2124, 0x2124, 0x1224, 0x0C24, 0x0024, 0x0024, 0x0000 } , "흘", {0x0000, 0x03E0, 0x0000, 0x3FFE, 0x0410, 0x0808, 0x07F0, 0x0000, 0x3FFE, 0x0000, 0x1FF8, 0x0004, 0x0FF8, 0x1000, 0x0FFC, 0x0000 } , "러", {0x0000, 0x0008, 0x3E08, 0x0108, 0x0108, 0x0108, 0x0108, 0x1E78, 0x2008, 0x2008, 0x2008, 0x2008, 0x1FC8, 0x0008, 0x0008, 0x0000 } , "도", {0x0000, 0x0000, 0x0FFC, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0080, 0x0080, 0x0080, 0x0080, 0x3FFE, 0x0000, 0x0000 } , "무", {0x0000, 0x1FFC, 0x1004, 0x1004, 0x1004, 0x1FFC, 0x0000, 0x0000, 0x3FFE, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0000 } , "소", {0x0000, 0x0000, 0x0080, 0x0080, 0x0080, 0x0140, 0x0220, 0x0C18, 0x3006, 0x0080, 0x0080, 0x0080, 0x0080, 0x3FFE, 0x0000, 0x0000 } , "식", {0x0000, 0x0408, 0x0408, 0x0C08, 0x0A08, 0x1108, 0x2088, 0x4048, 0x0008, 0x0000, 0x1FF0, 0x0008, 0x0008, 0x0008, 0x0008, 0x0000 } , "없", {0x0000, 0x0E08, 0x1108, 0x2088, 0x20F8, 0x2088, 0x1108, 0x0E08, 0x0000, 0x2110, 0x2110, 0x3F10, 0x2110, 0x2128, 0x1EC6, 0x0000 } , "는", {0x0000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000, 0x0000, 0x3FFE, 0x0000, 0x0000, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "데", {0x0000, 0x0024, 0x1F24, 0x2024, 0x2024, 0x2024, 0x21E4, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024, 0x1FA4, 0x0024, 0x0024, 0x0000 } , "세", {0x0000, 0x0824, 0x0824, 0x0824, 0x0824, 0x1424, 0x15E4, 0x1424, 0x2224, 0x2224, 0x4124, 0x4124, 0x0024, 0x0024, 0x0024, 0x0000 } , "월", {0x0000, 0x0F88, 0x1048, 0x1048, 0x0F88, 0x0008, 0x3FE8, 0x0208, 0x0278, 0x0208, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x0FF8, 0x0000 } , "에", {0x0000, 0x0024, 0x0C24, 0x1224, 0x1224, 0x2124, 0x21E4, 0x2124, 0x2124, 0x2124, 0x1224, 0x1224, 0x0C24, 0x0024, 0x0024, 0x0000 } , "변", {0x0000, 0x2088, 0x20F8, 0x2088, 0x3F88, 0x2088, 0x20F8, 0x2088, 0x1F08, 0x0008, 0x0008, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "버", {0x0000, 0x0008, 0x2088, 0x2088, 0x2088, 0x2088, 0x3FF8, 0x2088, 0x2088, 0x2088, 0x2088, 0x2088, 0x1F08, 0x0008, 0x0008, 0x0000 } , "린", {0x0000, 0x3F88, 0x0048, 0x0048, 0x1F88, 0x2008, 0x2008, 0x2038, 0x1FC8, 0x0008, 0x0008, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "보", {0x0000, 0x0000, 0x1004, 0x1004, 0x1FFC, 0x1004, 0x1004, 0x1004, 0x0FF8, 0x0080, 0x0080, 0x0080, 0x0080, 0x3FFE, 0x0000, 0x0000 } , "며", {0x0000, 0x0008, 0x3F88, 0x2088, 0x20F8, 0x2088, 0x2088, 0x2088, 0x2088, 0x20F8, 0x2088, 0x2088, 0x3F88, 0x0008, 0x0008, 0x0000 } , "실", {0x0000, 0x0408, 0x0408, 0x0A08, 0x0908, 0x1108, 0x2088, 0x4088, 0x0000, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "망", {0x0000, 0x3F88, 0x2088, 0x2088, 0x208E, 0x2088, 0x2088, 0x3F88, 0x0008, 0x03C0, 0x0C30, 0x1008, 0x1008, 0x0C30, 0x03C0, 0x0000 } , "할", {0x0000, 0x1F08, 0x0008, 0x7FC8, 0x000E, 0x1F08, 0x2088, 0x2088, 0x1F08, 0x0000, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x0FF8, 0x0000 } , "까", {0x0000, 0x0008, 0x3B88, 0x0448, 0x0448, 0x0448, 0x044E, 0x0848, 0x0888, 0x1088, 0x2108, 0x4208, 0x0408, 0x0008, 0x0008, 0x0000 } , "봐", {0x0000, 0x0008, 0x2048, 0x2048, 0x3FC8, 0x2048, 0x2048, 0x204E, 0x1F88, 0x0408, 0x0408, 0x0408, 0x7FE8, 0x0008, 0x0008, 0x0000 } , "오", {0x0000, 0x0000, 0x03E0, 0x0C18, 0x1004, 0x1004, 0x1004, 0x0C18, 0x03E0, 0x0080, 0x0080, 0x0080, 0x0080, 0x3FFE, 0x0000, 0x0000 } , "늘", {0x0000, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000, 0x3FFE, 0x0000, 0x0000, 0x1FF8, 0x0004, 0x0FF8, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "설", {0x0000, 0x0408, 0x0408, 0x0C08, 0x0A78, 0x1108, 0x2088, 0x4048, 0x0000, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "레", {0x0000, 0x0024, 0x3C24, 0x0224, 0x0224, 0x0224, 0x0224, 0x1CE4, 0x2024, 0x2024, 0x2024, 0x2024, 0x1FA4, 0x0024, 0x0024, 0x0000 } , "이", {0x0000, 0x0008, 0x0E08, 0x1108, 0x1108, 0x2088, 0x2088, 0x2088, 0x2088, 0x2088, 0x1108, 0x1108, 0x0E08, 0x0008, 0x0008, 0x0000 } , "맘", {0x0000, 0x3F88, 0x2088, 0x2088, 0x208E, 0x2088, 0x2088, 0x3F88, 0x0008, 0x0000, 0x1FF8, 0x1008, 0x1008, 0x1008, 0x0FF0, 0x0000 } , "으", {0x0000, 0x0000, 0x03E0, 0x0C18, 0x1004, 0x1004, 0x1004, 0x0C18, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFE, 0x0000, 0x0000 } , "로", {0x0000, 0x0000, 0x1FF8, 0x0004, 0x0004, 0x0FF8, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0080, 0x0080, 0x0080, 0x3FFE, 0x0000, 0x0000 } , "화", {0x0000, 0x1F08, 0x0008, 0x7FC8, 0x0008, 0x1F08, 0x2088, 0x208E, 0x2088, 0x1F08, 0x0408, 0x0408, 0x7FE8, 0x0008, 0x0008, 0x0000 } , "장", {0x0000, 0x3F88, 0x0408, 0x0408, 0x0A0E, 0x0908, 0x1088, 0x2048, 0x4008, 0x03C0, 0x0C30, 0x1008, 0x1008, 0x0C30, 0x03C0, 0x0000 } , "을", {0x0000, 0x03E0, 0x0C18, 0x1004, 0x0C18, 0x03E0, 0x0000, 0x3FFE, 0x0000, 0x1FF8, 0x0004, 0x0FF8, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "다", {0x0000, 0x0008, 0x1F88, 0x2008, 0x2008, 0x2008, 0x200E, 0x2008, 0x2008, 0x2008, 0x2008, 0x2068, 0x1F88, 0x0008, 0x0008, 0x0000 } , "시", {0x0000, 0x0008, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0A08, 0x0A08, 0x1108, 0x1108, 0x2088, 0x4048, 0x0008, 0x0008, 0x0000 } , "치", {0x0000, 0x1F08, 0x0008, 0x0008, 0x7FC8, 0x0408, 0x0408, 0x0408, 0x0A08, 0x0A08, 0x1108, 0x2088, 0x4048, 0x0008, 0x0008, 0x0000 } , "곤", {0x0000, 0x1FF8, 0x0004, 0x0004, 0x0104, 0x0104, 0x0108, 0x0100, 0x3FFE, 0x0000, 0x0000, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "것", {0x0000, 0x3F08, 0x0088, 0x0088, 0x00F8, 0x0108, 0x0608, 0x7808, 0x0008, 0x0088, 0x0080, 0x0140, 0x0220, 0x0410, 0x180C, 0x0000 } , "난", {0x0000, 0x2008, 0x2008, 0x2008, 0x2008, 0x200E, 0x2068, 0x1F88, 0x0008, 0x0008, 0x0008, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "준", {0x0000, 0x1FFC, 0x0080, 0x0140, 0x0630, 0x380E, 0x0000, 0x0000, 0x3FFE, 0x0080, 0x0080, 0x1080, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "게", {0x0000, 0x0024, 0x3E24, 0x0124, 0x0124, 0x0124, 0x01E4, 0x0124, 0x0224, 0x0224, 0x0424, 0x0824, 0x7024, 0x0024, 0x0024, 0x0000 } , "어", {0x0000, 0x0008, 0x0E08, 0x1108, 0x1108, 0x2088, 0x20F8, 0x2088, 0x2088, 0x2088, 0x1108, 0x1108, 0x0E08, 0x0008, 0x0008, 0x0000 } , "받", {0x0000, 0x2088, 0x2088, 0x2088, 0x3F8E, 0x2088, 0x2088, 0x1F08, 0x0008, 0x0000, 0x0FF8, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "했", {0x0000, 0x1E24, 0x0024, 0x7FA4, 0x003C, 0x1E24, 0x2124, 0x2124, 0x1E24, 0x0000, 0x0410, 0x0410, 0x0A28, 0x1144, 0x2082, 0x0000 } , "뿐", {0x0000, 0x1144, 0x1F7C, 0x1144, 0x1144, 0x0E38, 0x0000, 0x0000, 0x3FFE, 0x0080, 0x0080, 0x1080, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "그", {0x0000, 0x0000, 0x1FF8, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0008, 0x0008, 0x0008, 0x0000, 0x3FFE, 0x0000, 0x0000 } , "래", {0x0000, 0x0024, 0x3E24, 0x0124, 0x0124, 0x0124, 0x0124, 0x1E3C, 0x2024, 0x2024, 0x2024, 0x20E4, 0x1F24, 0x0024, 0x0024, 0x0000 } , "서", {0x0000, 0x0008, 0x0408, 0x0408, 0x0408, 0x0408, 0x0AF8, 0x0A08, 0x1108, 0x1108, 0x2088, 0x4048, 0x0008, 0x0008, 0x0008, 0x0000 } , "미", {0x0000, 0x0008, 0x3F88, 0x2088, 0x2088, 0x2088, 0x2088, 0x2088, 0x2088, 0x2088, 0x2088, 0x2088, 0x3F88, 0x0008, 0x0008, 0x0000 } , "안", {0x0000, 0x0E08, 0x1108, 0x2088, 0x2088, 0x208E, 0x1108, 0x0E08, 0x0008, 0x0008, 0x0008, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "같", {0x0000, 0x3F08, 0x0088, 0x0088, 0x010E, 0x0208, 0x0C08, 0x7008, 0x0000, 0x0FF8, 0x1000, 0x1FF8, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "은", {0x0000, 0x03E0, 0x0C18, 0x1004, 0x0C18, 0x03E0, 0x0000, 0x0000, 0x3FFE, 0x0000, 0x0000, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "여", {0x0000, 0x0008, 0x0E08, 0x1108, 0x11F8, 0x2088, 0x2088, 0x2088, 0x2088, 0x20F8, 0x1108, 0x1108, 0x0E08, 0x0008, 0x0008, 0x0000 } , "자", {0x0000, 0x0008, 0x3FC8, 0x0408, 0x0408, 0x0408, 0x040E, 0x0A08, 0x0908, 0x1088, 0x1088, 0x2048, 0x4048, 0x0008, 0x0008, 0x0000 } , "를", {0x0000, 0x1FF8, 0x0004, 0x0FF8, 0x1000, 0x0FFC, 0x0000, 0x3FFE, 0x0000, 0x1FF8, 0x0004, 0x0FF8, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "왜", {0x0000, 0x0024, 0x0C24, 0x1224, 0x2124, 0x2124, 0x2124, 0x123C, 0x0C24, 0x0824, 0x0824, 0x0824, 0x7FA4, 0x0024, 0x0024, 0x0000 } , "떠", {0x0000, 0x0008, 0x39C8, 0x4208, 0x4208, 0x4208, 0x4238, 0x4208, 0x4208, 0x4208, 0x4208, 0x4228, 0x39C8, 0x0008, 0x0008, 0x0000 } , "야", {0x0000, 0x0008, 0x0E08, 0x1108, 0x110E, 0x2088, 0x2088, 0x2088, 0x2088, 0x208E, 0x1108, 0x1108, 0x0E08, 0x0008, 0x0008, 0x0000 } , "떻", {0x0000, 0x39C8, 0x4208, 0x4208, 0x4238, 0x4208, 0x39C8, 0x0008, 0x03E0, 0x0000, 0x1FFC, 0x0000, 0x07F0, 0x0808, 0x07F0, 0x0000 } , "든", {0x0000, 0x0FFC, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000, 0x0000, 0x3FFE, 0x0000, 0x0000, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "살", {0x0000, 0x0408, 0x0408, 0x0C08, 0x0A0E, 0x1108, 0x2088, 0x4048, 0x0000, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "널", {0x0000, 0x2008, 0x2008, 0x20F8, 0x2008, 0x2008, 0x1FC8, 0x0008, 0x0000, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "면", {0x0000, 0x3F88, 0x20F8, 0x2088, 0x2088, 0x2088, 0x20F8, 0x2088, 0x3F88, 0x0008, 0x0008, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "모", {0x0000, 0x0000, 0x1FFC, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1FFC, 0x0080, 0x0080, 0x0080, 0x0080, 0x3FFE, 0x0000, 0x0000 } , "질", {0x0000, 0x3F88, 0x0408, 0x0408, 0x0A08, 0x0908, 0x1088, 0x2048, 0x4000, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "따", {0x0000, 0x0008, 0x39C8, 0x4208, 0x4208, 0x4208, 0x420E, 0x4208, 0x4208, 0x4208, 0x4208, 0x4218, 0x3DE8, 0x0008, 0x0008, 0x0000 } , "싶", {0x0000, 0x0408, 0x0408, 0x0C08, 0x0A08, 0x1108, 0x2088, 0x4048, 0x0008, 0x0000, 0x1FF8, 0x0420, 0x0420, 0x0420, 0x1FF8, 0x0000 } , "힘", {0x0000, 0x1F08, 0x0008, 0x7FC8, 0x0008, 0x1F08, 0x2088, 0x2088, 0x1F08, 0x0000, 0x1FF8, 0x1008, 0x1008, 0x1008, 0x0FF0, 0x0000 } , "상", {0x0000, 0x0408, 0x0408, 0x0C08, 0x0A0E, 0x1108, 0x2088, 0x4048, 0x0008, 0x03C0, 0x0C30, 0x1008, 0x1008, 0x0C30, 0x03C0, 0x0000 } , "홀", {0x0000, 0x03E0, 0x0000, 0x3FFE, 0x0410, 0x0808, 0x07F0, 0x0080, 0x3FFE, 0x0000, 0x1FF8, 0x0004, 0x0FF8, 0x1000, 0x0FFC, 0x0000 } , "겨", {0x0000, 0x0008, 0x3F08, 0x0088, 0x00F8, 0x0088, 0x0088, 0x0108, 0x01F8, 0x0208, 0x0408, 0x1808, 0x6008, 0x0008, 0x0008, 0x0000 } , "두", {0x0000, 0x0FFC, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000, 0x0000, 0x3FFE, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0000 } , "락", {0x0000, 0x3F08, 0x0088, 0x0088, 0x1F0E, 0x2008, 0x2038, 0x1FC8, 0x0008, 0x0000, 0x1FF0, 0x0008, 0x0008, 0x0008, 0x0008, 0x0000 } , "한", {0x0000, 0x1F08, 0x0008, 0x7FC8, 0x0008, 0x1F0E, 0x2088, 0x2088, 0x2088, 0x1F08, 0x0008, 0x1000, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "번", {0x0000, 0x2088, 0x2088, 0x2088, 0x3FF8, 0x2088, 0x2088, 0x2088, 0x1F08, 0x0008, 0x0008, 0x1008, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "었", {0x0000, 0x0E08, 0x1108, 0x2088, 0x20F8, 0x2088, 0x1108, 0x0E08, 0x0008, 0x0000, 0x0410, 0x0410, 0x0A28, 0x1144, 0x2082, 0x0000 } , "느", {0x0000, 0x0000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFE, 0x0000, 0x0000 } , "냐", {0x0000, 0x0008, 0x2008, 0x2008, 0x200E, 0x2008, 0x2008, 0x2008, 0x2008, 0x200E, 0x2068, 0x1F88, 0x0008, 0x0008, 0x0008, 0x0000 } , "땐", {0x0000, 0x3324, 0x4424, 0x4424, 0x4424, 0x443C, 0x4424, 0x4464, 0x3BA4, 0x0024, 0x0004, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "려", {0x0000, 0x0008, 0x3E08, 0x0108, 0x0108, 0x0178, 0x0108, 0x1E08, 0x2008, 0x2078, 0x2008, 0x2008, 0x1FC8, 0x0008, 0x0008, 0x0000 } , "몰", {0x0000, 0x1FFC, 0x1004, 0x1004, 0x1FFC, 0x0080, 0x0080, 0x3FFE, 0x0000, 0x1FF8, 0x0004, 0x0FF8, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "랐", {0x0000, 0x3F08, 0x0088, 0x0088, 0x1F0E, 0x2008, 0x2038, 0x1FC8, 0x0008, 0x0000, 0x0410, 0x0410, 0x0A28, 0x1144, 0x2082, 0x0000 } , "던", {0x0000, 0x1F88, 0x2008, 0x2008, 0x20F8, 0x2008, 0x2008, 0x2008, 0x1FC8, 0x0008, 0x0008, 0x1008, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "제", {0x0000, 0x0024, 0x7F24, 0x0824, 0x0824, 0x0824, 0x09E4, 0x0824, 0x1424, 0x1224, 0x2224, 0x2124, 0x4124, 0x0024, 0x0024, 0x0000 } , "알", {0x0000, 0x0E08, 0x1108, 0x2088, 0x208E, 0x1108, 0x0E08, 0x0008, 0x0000, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "겠", {0x0000, 0x3E24, 0x0124, 0x0124, 0x01E4, 0x0224, 0x0C24, 0x7024, 0x0024, 0x0000, 0x0410, 0x0410, 0x0A28, 0x1144, 0x2082, 0x0000 } , "잘", {0x0000, 0x3FC8, 0x0408, 0x0408, 0x0A0E, 0x0908, 0x1088, 0x2048, 0x4000, 0x1FF0, 0x0008, 0x0FF0, 0x1000, 0x1000, 0x0FF8, 0x0000 } , "위", {0x0000, 0x0708, 0x0888, 0x1048, 0x1048, 0x0888, 0x0708, 0x0008, 0x7FF8, 0x0208, 0x0208, 0x0208, 0x0208, 0x0408, 0x0008, 0x0000 } , "둔", {0x0000, 0x0FFC, 0x1000, 0x1000, 0x1000, 0x0FFC, 0x0000, 0x0000, 0x3FFE, 0x0080, 0x0080, 0x1080, 0x1000, 0x1000, 0x0FFC, 0x0000 } , "내", {0x0000, 0x0024, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024, 0x203C, 0x2024, 0x2024, 0x21A4, 0x1E24, 0x0024, 0x0024, 0x0024, 0x0000 } , "줘", {0x0000, 0x7FC8, 0x0408, 0x0A08, 0x1108, 0x60C8, 0x0008, 0x0008, 0x7FE8, 0x0408, 0x0408, 0x04F8, 0x0408, 0x0808, 0x0008, 0x0000 } }; //-------------------------------------------------- #define _TFTLCD_ myLcd // TFT LCD 이름 정의/ #include "D:\\Program Files (x86)\\Arduino\\myHeader\\Hangul_Direct.H" HanGul_TFT ht; // 한글출력 클래스 void setup() { ht.start(); myLcd.InitLCD(); myLcd.setRotation(3); //3 가로 480x320 //2 세로 320x480 myLcd.clrScr(); int y=-16; ht.color(cWhite,cBlack); ht.print(F("우연히 날 찾아와 사랑만 남기고 간 너"),0,y+=16); ht.print(F("하루가 지나 몇해가 흘러도 아무 소식도 없는데"),0,y+=16); ht.print(F("세월에 변해버린 날 보며 실망할까봐"),0,y+=16); ht.print(F("오늘도 나는 설레이는 맘으로 화장을 다시 고치곤 해"),0,y+=16); ht.print(F("아무것도 난 해준게 없어 받기만 했을뿐 그래서 미안해"),0,y+=16); ht.print(F("나같은 여자를 왜 사랑했는지 왜 떠나야 했는지"),0,y+=16); ht.print(F("어떻게든 우린 다시 사랑해야해"),0,y+=16); ht.print(F("살다가 널 만나면 모질게 따지고 싶어"),0,y+=16); ht.print(F("힘든 세상에 나홀로 남겨두고 왜 연락한번 없었느냐고"),0,y+=16); ht.print(F("아무것도 난 해준게 없어 받기만 했을뿐 그래서 미안해"),0,y+=16); ht.print(F("나같은 여자를 왜 사랑했는지 왜 떠나야 했는지"),0,y+=16); ht.print(F("어떻게든 우린 다시 사랑해야 해"),0,y+=16); ht.print(F("그땐 너무 어려서 몰랐던 사랑을 이제야 알겠어"),0,y+=16); ht.print(F("보잘것 없지만 널위해 남겨둔 내 사랑을 받아줘"),0,y+=16); ht.print(F("어떻게든 우린 다시 사랑해야해"),0,y+=16); } void loop() { } |
Hangul_Direct.H |
|
|
// Hangul_Direct.H ver 1.0 아두이노용 한글 출력 클래스
//
// 제작자 : 신 옥 진
//
// 재배포는 금지, 그냥 링크를 사용 하세요.
//
#ifndef _Hangul_Direct_
#define _Hangul_Direct_
#include <Adafruit_GFX.h>
#include <UTFTGLUE.h>
#ifndef _MY_COLOR_ // Color 정의
#define _MY_COLOR_
#define cBlack 0x0000
#define cWhite 0xFFFF
#define cRed 0xF800
#define cGreen 0x0400
#define cBlue 0x001F
#define cSilver 0xC618
#define cGray 0x8410
#define cMaroon 0x8000
#define cYellow 0xFFE0
#define cOlive 0x8400
#define cLime 0x07E0
#define cAqua 0x07FF
#define cTeal 0x0410
#define cNavy 0x0010
#define cFuchsia 0xF81F
#define cPurple 0x8010
#define cTransparent 0xFFFFFFFF
#endif
UTFTGLUE _TFTLCD_(0x9488,A2,A1,A3,A4,A0);
/*
String readLine( File inf )
{
char buff[50];
int idx=0;
while(true)
{
byte b,b2;
b=inf.read();
if( b == 0x0d )
{
b2= inf.read();
if( b2 == 0x0a )
{
buff[idx]= 0;
return( String( buff ) );
}
buff[idx++] = b;
buff[idx++] = b2;
}
else buff[idx++] =b;
}
}
*/
struct Box // 문자열의 사각형 좌표
{
int x,y,x2,y2;
} ;
class HanGul_TFT
{
private:
unsigned short _HANGUL_FONT[16]; // 폰트 저장변수
int _color=cWhite; // 폰트색상
int _bkColor = cBlack; // 폰트배경색
public:
Box box;
void start();
void color(int _c ) ; // 글자색
void color(int _c ,int _bk); // 글자색, 배경색
void fill(int _c); // 바로 앞에 출력한 문자열을 _c 색으로 채우기
void fill() ; // 배경색으로 채우기
void rect(int _c); // 바로 앞에 출력한 문자열에 _c 색으로 테두리 그리기
void rect(); // 문자색으로 테두리 그리기
void under(int _c); // 바로 앞에 출력한 문자열에 문자색으로 밑줄 그리기
void under(); // 문자색으로 밑줄 그리기
void print( String s, int x, int y , int mx, int my ); // x,y좌표에 가로 mx배 ,세로 my배로 문장 출력
void print( String s,int x, int y ); // 1배
void print( String s,int x, int y ,int m ); // m배
private:
void _setDot_Func( int col, int row, int x, int y,int mx,int my ,int c ); //폰트의 1bit에 해당하는 점 그리기
void _drawFont_Func( int x, int y, int mx , int my);
bool _memFont( long code );
#ifdef _INDEX_2_
void getFont( long code );
#endif
};
void HanGul_TFT::start()
{
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH); // TFT LCD 시작
}
void HanGul_TFT::color(int _c )
{
_color=_c;
}
void HanGul_TFT::color(int _c ,int _bk)
{
_color=_c;
_bkColor=_bk;
}
void HanGul_TFT::fill(int _c) // 문자열을 _c색상으로 채우기
{
_TFTLCD_.setColor( _c );
_TFTLCD_.fillRect(box.x,box.y,box.x2,box.y2);
}
void HanGul_TFT::fill() { fill(_bkColor); } // 문자열을 배경색상으로 채우기 // 문자열 지우기에 이용
void HanGul_TFT::rect(int _c) // _c색상으로 문자열의 외곽선 그리기
{
_TFTLCD_.setColor( _c );
_TFTLCD_.drawRect(box.x,box.y,box.x2,box.y2);
}
void HanGul_TFT::rect() { rect(_color); } // 문자색상으로 문자열의 외곽선 그리기
void HanGul_TFT::under(int _c) // 문자열에 _c색상으로 밑줄
{
_TFTLCD_.setColor( _c );
_TFTLCD_.fillRect(box.x, box.y2-2,box.x2,box.y2+1);
}
void HanGul_TFT::under(){ under(_color); } // 문자열에 문자색상으로 밑줄
void HanGul_TFT::print( String s,int x, int y ) { print( s, x, y , 1 ,1 ); }
void HanGul_TFT::print( String s,int x, int y ,int m ) { print( s, x, y , m, m ); }
void HanGul_TFT::_setDot_Func( int col, int row, int x, int y,int mx,int my ,int c )
{
_TFTLCD_.setColor( c );
for(int dx=0 ; dx< mx ;dx++)
for( int dy=0;dy<my;dy++)
_TFTLCD_.drawPixel( x+col*mx+dx ,y+row*my+dy );
}
void HanGul_TFT::_drawFont_Func( int x, int y, int mx , int my)
{ // 문자(1자) 그리기
for( int row=0; row< 16 ; row++) // 폰트 bit 세로방향
{
for(int col=0;col<16;col++) // 폰트 bit 가로방향
{
if( _HANGUL_FONT[row] & 0b1000000000000000 ) _setDot_Func( col, row, x, y, mx, my, _color);
else _setDot_Func( col, row, x, y, mx, my, _bkColor );
_HANGUL_FONT[row] <<= 1; // bit가 1이면 점그리기 함수 호출
}
}
}
bool HanGul_TFT::_memFont( long code )
{
int size=sizeof(font) /sizeof(Font);
Serial.println( "---------------" );
Serial.println( code );
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);
}
void HanGul_TFT::print( String s, int x, int y , int mx, int my )
{
box.x=x;
box.y=y;
box.y2=y+16*my-1;
_TFTLCD_.setTextSize(my*2);
for( int p=0; p <s.length() ;p++)
{
if( isAscii(s[p]) )
{
if( s[p]==0x0d )break;
_TFTLCD_.setCursor(x,y);
_TFTLCD_.setTextColor(_color,_bkColor);
_TFTLCD_.println(s[p]);
if( s[p]==0x20 ) x+=8*my;
else x+=12*my;
}
else
{
_TFTLCD_.setColor( _color) ;
long code =byte(s[p]);
code = code << 8;
code+=byte(s[p+1]);
code = code << 8;
code+=byte(s[p+2]);
_memFont( code);
_drawFont_Func( x, y, mx, my) ;
x+=16*mx;
p+=2;
} // isASCII else
}// p 스트링 길이 반복
box.x2=x-1;
}
#endif
|
'프로젝트 > TFT LCD 한글 출력 (아두이노)' 카테고리의 다른 글
F연산자와 readLine 함수 사용하여 메모리 확보하기 (0) | 2022.08.20 |
---|---|
Hangul_SD,H ( SD카드에 폰트화일,인덱스화일 ) (0) | 2022.08.20 |
한글CLASS 메소드 (0) | 2022.08.14 |
한글출력 Class 폰트파일, 인덱스 규격 (0) | 2022.08.14 |
TFT LCD에서 SD카드 다양한 한글 출력 (7) (0) | 2022.08.12 |