Для русификации библиотеки Adafruit-GFX требуется:
- скачать любой из приведённых ниже архивов;
- заменить файл glcdfont.c в Adafruit-GFX;
- добавить функцию utf8rus() в скетч;
- вставить в начале скетча команду: display.cp437(true);
Применять функцию utf8rus() можно внутри команд печати строк: display.println(utf8rus("Тест"));
В архивах примеры и библиотеки, различающиеся по виду дисплея:
Более подробная информация в предыдущих постах.
Например:
В посте 27 демонстрируется скетч, с помощью которого можно редактировать шрифты (в том числе и в glcdfont.c).
В посте 40 приводится вариант utf8rus() с экономным использованием оперативной памяти (с char-строками вместо String).
В посте 46 показан 2.8" TFT Touch Shield для Uno и Mega, и прилагается полный набор библиотек и примеров для него.
В посте 80 описаны изменения в шрифте для проекта Transistor Tester (http://arduino.ru/forum/proekty/transistor-tester-arduino).
В посте 379 дополнительно приведён скетч для демонстрации динамических эффектов из символов, содержащихся в шрифте.
В посте 399 приводится скетч с функцией utf8rus2hex(), которая перекодирует русские буквы и преобразует их в строчные HEX-символы.
В посте 405 приводится вариант функции utf8rus_P() для работы со строками, размещёнными в PROGMEM.
Установил IDE на ноутбук с Win10. Запустил на нем компиляцию. Все работает. Так что, скорее всего, проблема не в библиотеках и не в Arduino IDE. mifar - большое спасибо за помощь!
Огромное спасибо автору arduinec за работающую русификацию!!!
Единственно, у меня не работал символ градуса «°». Выдавал конкретно вместо этого: «В°» (русская В). Выяснилось, что почему-то мой «градус» представляется 2-мя байтами 0xC2, 0xB0. Не спрашивайте в какой кодировке - не знаю. На клавиатуре (Windows) я просто сделал когда-то горячую клавишу, удобно выдающую «°», которую взял в Character Map. Откуда там второй байт - не знаю.
Тем не менее этот ° - довольно нужный символ в микропроцессорных проектах.
Поэтому пришлось «подштопать» utf8rus - убрать у такого градуса первый байт. Не мудрствуя лукаво в том, в чём не полностью разбираюсь, добавил 3-й «case» в имеющийся switch:
case 0xC2: {
n = source[i]; i++;
if (n == 0xB0) break;
n = 0xC2; i--;
break;
}
А может начать с "Я подключил свой экран, взял из примера библиотеки Adafruit-GFX и вывел на экран "hello world" (и тут же фото), а вот этот кусочек кода (тут далее по тексту код) с фразой "привет мир" не получается"?
За последние дни уже два человека приходили с жалобами на вашу функцию utf2rus. У потерпевших были проблемы со String версией функции, но версия через char (из сообщения #40 ветки) тоже не слишком хорошо написана. Поскольку Ваше решение руссификации очень популярно, наверно лучше исправить.
Вот тут описал те моменты, которые мне кажется стоит изменить
Я со шрифтами и с русификацией намучился. Использовал конвертер шрифтов для adafruit gfx с github, но что-то не пошло. Потом решил проблемы другим путем — сам нарисовал нужные мне шрифты. Основы взял из библиотеки https://ffont.ru/, исправил, как мне надо. Возни меньше.
Я со шрифтами и с русификацией намучился. Использовал конвертер шрифтов для adafruit gfx с github, но что-то не пошло. Потом решил проблемы другим путем — сам нарисовал нужные мне шрифты. Основы взял из библиотеки https://ffont.ru/, исправил, как мне надо. Возни меньше.
По ссылке выходит
An Error Was Encountered
The URI you submitted has disallowed characters.
Но если не переходить по ссылке, а просто её скопировать в адресную строку, то всё получается.
дедушка не поверишь! c ТРЕХ браузеров попробовал и ни в одном форум новый не заработал, пишет обновите браузер! а у меня Windows XP!! и все браузеры стоят последние для этой системы!!
Ребят, подскажите, как длинный текст вывести? Матрица Р4,в режиме бегущей строки, только 13 символов выводится, например пишу "выберите программу", вижу "выберите прог" размер текста 2. При размере текста 1, текст выводится полностью
Краткие итоги предыдущих 500 постов
Для русификации библиотеки Adafruit-GFX требуется:
- скачать любой из приведённых ниже архивов;
- заменить файл glcdfont.c в Adafruit-GFX;
- добавить функцию utf8rus() в скетч;
- вставить в начале скетча команду: display.cp437(true);
Применять функцию utf8rus() можно внутри команд печати строк:
display.println(utf8rus("Тест"));
В архивах примеры и библиотеки, различающиеся по виду дисплея:
0.96" OLED 128x64
https://yadi.sk/d/dd7ULuRftVcRV
2.8" TFT Touch Shield 320x240
https://yadi.sk/d/FgUr5NPztVcRd
Nokia 5110 84x48
https://yadi.sk/d/juZ_mZbfsTpez
Более подробная информация в предыдущих постах.
Например:
В посте 27 демонстрируется скетч, с помощью которого можно редактировать шрифты (в том числе и в glcdfont.c).
В посте 40 приводится вариант utf8rus() с экономным использованием оперативной памяти (с char-строками вместо String).
В посте 46 показан 2.8" TFT Touch Shield для Uno и Mega, и прилагается полный набор библиотек и примеров для него.
В посте 80 описаны изменения в шрифте для проекта Transistor Tester (http://arduino.ru/forum/proekty/transistor-tester-arduino).
В посте 379 дополнительно приведён скетч для демонстрации динамических эффектов из символов, содержащихся в шрифте.
В посте 399 приводится скетч с функцией utf8rus2hex(), которая перекодирует русские буквы и преобразует их в строчные HEX-символы.
В посте 405 приводится вариант функции utf8rus_P() для работы со строками, размещёнными в PROGMEM.
Скомпилировалось нормально
Тут причина в чем-то другом по-видимому.
Установил IDE на ноутбук с Win10. Запустил на нем компиляцию. Все работает. Так что, скорее всего, проблема не в библиотеках и не в Arduino IDE. mifar - большое спасибо за помощь!
Огромное спасибо автору arduinec за работающую русификацию!!!
Единственно, у меня не работал символ градуса «°». Выдавал конкретно вместо этого: «В°» (русская В). Выяснилось, что почему-то мой «градус» представляется 2-мя байтами 0xC2, 0xB0. Не спрашивайте в какой кодировке - не знаю. На клавиатуре (Windows) я просто сделал когда-то горячую клавишу, удобно выдающую «°», которую взял в Character Map. Откуда там второй байт - не знаю.
Тем не менее этот ° - довольно нужный символ в микропроцессорных проектах.
Поэтому пришлось «подштопать» utf8rus - убрать у такого градуса первый байт. Не мудрствуя лукаво в том, в чём не полностью разбираюсь, добавил 3-й «case» в имеющийся switch:
Вроде работает...
русификация работает если utf8rus() вызвать из setup, но не работает если вызвать из loop. В чем причина, подскажите пожалуйста
А может начать с "Я подключил свой экран, взял из примера библиотеки Adafruit-GFX и вывел на экран "hello world" (и тут же фото), а вот этот кусочек кода (тут далее по тексту код) с фразой "привет мир" не получается"?
русификация работает если utf8rus() вызвать из setup, но не работает если вызвать из loop. В чем причина, подскажите пожалуйста
очень напиминает известное
"Товарищи ученые, весной у меня подполе происходит непонятный стук. Подскажите, в чем причина. пожалуйста?"
Показывайте полный код
всегда пожалуйста
уважаемый arduinec
За последние дни уже два человека приходили с жалобами на вашу функцию utf2rus. У потерпевших были проблемы со String версией функции, но версия через char (из сообщения #40 ветки) тоже не слишком хорошо написана. Поскольку Ваше решение руссификации очень популярно, наверно лучше исправить.
Вот тут описал те моменты, которые мне кажется стоит изменить
Я со шрифтами и с русификацией намучился. Использовал конвертер шрифтов для adafruit gfx с github, но что-то не пошло. Потом решил проблемы другим путем — сам нарисовал нужные мне шрифты. Основы взял из библиотеки https://ffont.ru/, исправил, как мне надо. Возни меньше.
Я со шрифтами и с русификацией намучился. Использовал конвертер шрифтов для adafruit gfx с github, но что-то не пошло. Потом решил проблемы другим путем — сам нарисовал нужные мне шрифты. Основы взял из библиотеки https://ffont.ru/, исправил, как мне надо. Возни меньше.
An Error Was Encountered
The URI you submitted has disallowed characters.
Но если не переходить по ссылке, а просто её скопировать в адресную строку, то всё получается.
Правильный адрес такой: https://ffont.ru
что случилось с форумом?? новый форум это .... просто!
не хочете - не ешьте.
дедушка не поверишь! c ТРЕХ браузеров попробовал и ни в одном форум новый не заработал, пишет обновите браузер! а у меня Windows XP!! и все браузеры стоят последние для этой системы!!
Дак обнови сначала Виндовс ХР, до семерки хотя бы
не хочешь обновлять XP поставь Линукс на этот же диск, в нём работает
Ребят, подскажите, как длинный текст вывести? Матрица Р4,в режиме бегущей строки, только 13 символов выводится, например пишу "выберите программу", вижу "выберите прог" размер текста 2. При размере текста 1, текст выводится полностью