LCD UC1609 Русский текст
- Войдите на сайт для отправки комментариев
Купил я значит дисплей. Все вроде бы хорошо, но нет русского шрифта. Готовой русификации под библиотеку ERM19264_UC1609 тоже не нашел, решил сам дописать шрифт.
Проверено на библиотеке версии 1.3
Что нужно для вывода? Идем в Документы -> Arduino -> libraries -> ERM19264_UC1609 -> src
Нам нужно отредактировать файл ERM19264_graphics_font.h
Ищем там //Default Standard extended ASCII 5x8 font. и меняем массив на новый
static const unsigned char UC_Font_One[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, // :) 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x18, 0x3C, 0x18, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x18, 0x24, 0x18, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x26, 0x29, 0x79, 0x29, 0x26, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x60, 0x60, 0x60, 0x60, 0x60, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x10, 0x20, 0x7E, 0x20, 0x10, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x30, 0x38, 0x3E, 0x38, 0x30, 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, // Space 0x00, 0x00, 0x5F, 0x00, 0x00, // ! 0x00, 0x07, 0x00, 0x07, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x23, 0x13, 0x08, 0x64, 0x62, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x80, 0x70, 0x30, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x60, 0x60, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x72, 0x49, 0x49, 0x49, 0x46, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x41, 0x21, 0x11, 0x09, 0x07, 0x36, 0x49, 0x49, 0x49, 0x36, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x41, 0x22, 0x14, 0x08, 0x02, 0x01, 0x59, 0x09, 0x06, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x26, 0x49, 0x49, 0x49, 0x32, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x63, 0x14, 0x08, 0x14, 0x63, 0x03, 0x04, 0x78, 0x04, 0x03, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x04, 0x02, 0x01, 0x02, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x03, 0x07, 0x08, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x38, 0x44, 0x44, 0x44, 0x28, 0x38, 0x44, 0x44, 0x28, 0x7F, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x38, 0x44, 0x44, 0x44, 0x38, 0xFC, 0x18, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x18, 0xFC, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x48, 0x54, 0x54, 0x54, 0x24, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x44, 0x28, 0x10, 0x28, 0x44, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x44, 0x64, 0x54, 0x4C, 0x44, // z 0x00, 0x08, 0x36, 0x41, 0x00, // { 0x00, 0x00, 0x77, 0x00, 0x00, // | 0x00, 0x41, 0x36, 0x08, 0x00 // } #ifdef UC_FONT_MOD_TWO ,0x02, 0x01, 0x02, 0x04, 0x02, // capital letter c with cedilla 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x1E, 0xA1, 0xA1, 0x61, 0x12, 0x3A, 0x40, 0x40, 0x20, 0x7A, 0x38, 0x54, 0x54, 0x55, 0x59, 0x21, 0x55, 0x55, 0x79, 0x41, 0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut 0x21, 0x55, 0x54, 0x78, 0x40, 0x20, 0x54, 0x55, 0x79, 0x40, 0x0C, 0x1E, 0x52, 0x72, 0x12, 0x39, 0x55, 0x55, 0x55, 0x59, 0x39, 0x54, 0x54, 0x54, 0x59, 0x39, 0x55, 0x54, 0x54, 0x58, 0x00, 0x00, 0x45, 0x7C, 0x41, 0x00, 0x02, 0x45, 0x7D, 0x42, 0x00, 0x01, 0x45, 0x7C, 0x40, 0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut 0xF0, 0x28, 0x25, 0x28, 0xF0, 0x7C, 0x54, 0x55, 0x45, 0x00, 0x20, 0x54, 0x54, 0x7C, 0x54, 0x7C, 0x0A, 0x09, 0x7F, 0x49, 0x32, 0x49, 0x49, 0x49, 0x32, 0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut 0x32, 0x4A, 0x48, 0x48, 0x30, 0x3A, 0x41, 0x41, 0x21, 0x7A, 0x3A, 0x42, 0x40, 0x20, 0x78, 0x00, 0x9D, 0xA0, 0xA0, 0x7D, 0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut 0x3D, 0x40, 0x40, 0x40, 0x3D, 0x3C, 0x24, 0xFF, 0x24, 0x24, 0x48, 0x7E, 0x49, 0x43, 0x66, 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, 0xFF, 0x09, 0x29, 0xF6, 0x20, 0xC0, 0x88, 0x7E, 0x09, 0x03, 0x20, 0x54, 0x54, 0x79, 0x41, 0x00, 0x00, 0x44, 0x7D, 0x41, 0x30, 0x48, 0x48, 0x4A, 0x32, 0x38, 0x40, 0x40, 0x22, 0x7A, 0x00, 0x7A, 0x0A, 0x0A, 0x72, 0x7D, 0x0D, 0x19, 0x31, 0x7D, 0x26, 0x29, 0x29, 0x2F, 0x28, 0x26, 0x29, 0x29, 0x29, 0x26, 0x30, 0x48, 0x4D, 0x40, 0x20, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38, 0x2F, 0x10, 0xC8, 0xAC, 0xBA, 0x2F, 0x10, 0x28, 0x34, 0xFA, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x08, 0x14, 0x2A, 0x14, 0x22, 0x22, 0x14, 0x2A, 0x14, 0x08, 0xAA, 0x00, 0x55, 0x00, 0xAA, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x14, 0x14, 0x14, 0xFF, 0x00, 0x10, 0x10, 0xFF, 0x00, 0xFF, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x14, 0x14, 0x14, 0xFC, 0x00, 0x14, 0x14, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x14, 0x14, 0xF4, 0x04, 0xFC, 0x14, 0x14, 0x17, 0x10, 0x1F, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0x1F, 0x00, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x7E, 0x09, 0x09, 0x09, 0x7E, // А -- Заглавные буквы 0x7F, 0x49, 0x49, 0x49, 0x30, // Б 0x7F, 0x49, 0x49, 0x49, 0x36, // В 0x7F, 0x01, 0x01, 0x01, 0x02, // Г 0x60, 0x30, 0x2F, 0x21, 0x7F, // Д 0x7F, 0x49, 0x49, 0x49, 0x41, // Е 0x77, 0x08, 0x3F, 0x08, 0x77, // Ж 0x20, 0x42, 0x49, 0x49, 0x3E, // З 0x7F, 0x20, 0x10, 0x08, 0x7F, // И 0x7C, 0x21, 0x12, 0x09, 0x7C, // Й 0x7F, 0x08, 0x08, 0x14, 0x63, // К 0x40, 0x3F, 0x01, 0x01, 0x7F, // Л 0x7F, 0x02, 0x0C, 0x02, 0x7F, // М 0x7F, 0x08, 0x08, 0x08, 0x7F, // Н 0x3E, 0x41, 0x41, 0x41, 0x3E, // О 0x7F, 0x01, 0x01, 0x01, 0x7F, // П 0x7F, 0x09, 0x09, 0x09, 0x06, // Р 0x3E, 0x41, 0x41, 0x41, 0x22, // С 0x01, 0x01, 0x7F, 0x01, 0x01, // Т 0x47, 0x48, 0x48, 0x48, 0x3F, // У 0x0C, 0x12, 0x7F, 0x12, 0x0C, // Ф 0x41, 0x36, 0x08, 0x36, 0x41, // Х 0x3F, 0x40, 0x40, 0x7F, 0xC0, // Ц 0x07, 0x08, 0x08, 0x08, 0x7F, // Ч 0x7F, 0x40, 0x78, 0x40, 0x7F, // Ш 0x7F, 0x40, 0x78, 0x40, 0xFF, // Щ 0x01, 0x7F, 0x48, 0x48, 0x30, // Ъ 0x7F, 0x48, 0x30, 0x00, 0x7F, // Ы 0x7F, 0x48, 0x48, 0x48, 0x30, // Ь 0x22, 0x41, 0x49, 0x49, 0x3E, // Э 0x7F, 0x08, 0x3E, 0x41, 0x3E, // Ю 0x46, 0x49, 0x29, 0x19, 0x7F, // Я 0x20, 0x54, 0x54, 0x78, 0x40, // а -- Маленькие буквы 0x78, 0x54, 0x54, 0x54, 0x20, // б 0x7C, 0x54, 0x54, 0x54, 0x28, // в 0x7C, 0x04, 0x04, 0x04, 0x08, // г 0xE0, 0x50, 0x4C, 0x44, 0xFC, // д 0x38, 0x54, 0x54, 0x54, 0x08, // е 0x6C, 0x10, 0x7C, 0x10, 0x6C, // ж 0x20, 0x48, 0x44, 0x54, 0x38, // з 0x7C, 0x20, 0x10, 0x08, 0x7C, // и 0x7C, 0x21, 0x12, 0x09, 0x7C, // й 0x7C, 0x10, 0x10, 0x28, 0x44, // к 0x40, 0x3C, 0x04, 0x04, 0x7C, // л 0x7C, 0x08, 0x30, 0x08, 0x7C, // м 0x7C, 0x10, 0x10, 0x10, 0x7C, // н 0x38, 0x44, 0x44, 0x44, 0x38, // о 0x7C, 0x04, 0x04, 0x04, 0x7C, // п 0x7C, 0x14, 0x14, 0x14, 0x08, // р 0x38, 0x44, 0x44, 0x44, 0x20, // с 0x04, 0x04, 0x7C, 0x04, 0x04, // т 0x0C, 0x50, 0x50, 0x50, 0x3C, // у 0x10, 0x28, 0x7C, 0x28, 0x10, // ф 0x44, 0x28, 0x10, 0x28, 0x44, // х 0x3C, 0x40, 0x40, 0x7C, 0xC0, // ц 0x0C, 0x10, 0x10, 0x10, 0x7C, // ч 0x7C, 0x40, 0x70, 0x40, 0x7C, // ш 0x7C, 0x40, 0x70, 0x40, 0xFC, // щ 0x04, 0x7C, 0x50, 0x50, 0x20, // ъ 0x7C, 0x50, 0x20, 0x00, 0x7C, // ы 0x7c, 0x50, 0x50, 0x50, 0x20, // ь 0x44, 0x54, 0x54, 0x54, 0x38, // э 0x7c, 0x10, 0x7c, 0x44, 0x7c, // ю 0x48, 0x5c, 0x54, 0x34, 0x7c // я #endif };
Далее в вашем проекте для вывода символов русского алфавита нужно использовать многим знакомую функцию. Добавляем в конец скетча это:
/* Recode russian fonts from UTF-8 to Windows-1251 */ String rus(String source) { int i,k; String target; unsigned char n; char m[2] = { '0', '\0' }; k = source.length(); i = 0; while (i < k) { n = source[i]; i++; if (n >= 0xC0) { switch (n) { case 0xD0: { n = source[i]; i++; if (n == 0x81) { n = 0xA8; break; } if (n >= 0x90 && n <= 0xBF) n = n + 0x30; break; } case 0xD1: { n = source[i]; i++; if (n == 0x91) { n = 0xB8; break; } if (n >= 0x80 && n <= 0x8F) n = n + 0x70; break; } } } m[0] = n; target = target + String(m); } return target; }
Теперь для вывода русского текста нужно всего лишь вызвать эту функцию. Пример:
mylcd.setTextColor(FOREGROUND); mylcd.setTextSize(1); mylcd.setCursor(0, 0); mylcd.print(rus(F("абвгдежзийклмнопрстуфхцчшщъыьэюяпривет, как дела?"))); mylcd.setCursor(0, 16); mylcd.print(rus(F("АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯПРИВЕТ, КАК ДЕЛА?"))); mylcd.setCursor(0, 32); mylcd.print(rus(F("ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz :;.$=+#@!")));
Всего лишь писать rus("ваш текст")
Русский и английский текст можно выводить одновременно в одной строке. rus("ABCDEFG АБВГД")
Буквы "Ё" нету.
Приветствую Вас. Постарался повторить всё как написано. Далее взял пример HELLO из библиотеки. Добавил нужные строки в середине, и конце скетча. Но к сожалению русских букв не увидел, на экране Hello world, а далее абракадабра. Что я делаю не так ?