Так это вроде графический 128х64 дисплей. Что там русифицировать? Используйте шрифт с русским знакогенератором.
Контроллер не содержит страницы с русским знакогенератором, но кажется, можно самостоятельно рисовать нужные символы)
А слабо вывести на экран все символы шрифта? Прям в несколько колонок - код символа в хексе и рядышком сам символ. Потом внимательно посмотреть - если видим хоть где-то русские буквы, то этот шрифт подходит, иначе ищем другой шрифт (или рисуем самостоятельно знакогенератор - в сети есть спецпрограммы). Нашли буквы - пишем функцию перекодировки, которая принимает строку в utf8 (стандртный чарсет в ардуине) и выдает эту строку в кодировке вашего шрифта.
это вывести номер этого символа в шестнадцатеричном формате. можете и в десятичном выводить, просто тогда разная ширина колонок будет
Вот вам перекодировщик из utf8 в ansi Код (C++): String utf8rus(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; } вызывать как tft.print(utf8rus("Привет"))
Спасибки огромное ни чего страшного не будет если в строке tft.print(utf8rus("Привет")); будет u8g.print(utf8rus("Привет"))
Вот какой код получился Код (C++): /* * SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 */ #include "U8glib.h" U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); String utf8rus(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; } void draw(void) { u8g.setFont(u8g_font_unifont); u8g.setPrintPos(0, 20); u8g.print(utf8rus("Привет")); } void setup() { u8g.setRot180(); } void loop() { u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); delay(500); } Вот что получается