Для русификации библиотеки Adafruit-GFX требуется:
- скачать любой из приведённых ниже архивов;
- заменить файл glcdfont.c в Adafruit-GFX;
- добавить функцию utf8rus() в скетч;
- вставить в начале скетча команду: display.cp437(true);
Применять функцию utf8rus() можно внутри команд печати строк: display.println(utf8rus("Тест"));
В архивах примеры и библиотеки, различающиеся по виду дисплея:
Более подробная информация в предыдущих постах.
Например:
В посте 27 демонстрируется скетч, с помощью которого можно редактировать шрифты (в том числе и в glcdfont.c).
В посте 40 приводится вариант utf8rus() с экономным использованием оперативной памяти.
В посте 46 показан 2.8" TFT Touch Shield для Uno и Mega, и прилагается полный набор библиотек и примеров для него.
В посте 80 описаны изменения в шрифте для проекта Transistor Tester.
Столкнулся с такой проблемой: дома работаю с ардуино, всё хорошо. Ещё раз спасибо уважаемому arduinec и всем, кто помогал. Но вот решил подключить на работе - шрифты не идут - кракозябры рисует. Среда разработки не ругается, сообщений не выдает... Пробовал переустанавливать, и даже тупо скопировать полностью папку ардуино с домашнего на рабочий комп - нивкакую... ((
Например, можно заменить glcdfont.c во всех Adafruit-GFX.
[/quote]
Тоже пробовал - не помогает. Ниче понять не могу((( Есть где-то инструкция подробная для начинающих, как устанавливать библиотеки, как их удалять - прям пошагово? Буду начинать с начала...
Появился у меня недавно 2.8" TFT Touch Shield для Uno и Mega
Вопрос к уважаемому arduinec.
Имеется Arduino Mega 2560 и 2,4" TFT, много обсуждаемый на форуме. С графикой порядок, даже русские шрифты, благодаря Вам и этому форуму... Но.
Запонадобилось соорудить диммер с графическим экраном и, соответственно, внешним прерыванием по переходу через ноль. Без выше обсуждаемого экрана всё чудесно, всё работает. Подключаю к ардуине экран, затем втыкаю пин 21 (прерывание 2) - белый экран. Перепробовал все доступные прерывания - одно и то же. Прерывания 0 и 1 сразу в белый экран, даже без подключения живого провода перехода через ноль.
Как быть с этим экраном? Есть возможность обойти проблему?
В качестве альтернативы(замены) нашел у китайцев похожего на Ваш TFT 2.8". Вот здесь: https://www.elecrow.com/wiki/index.php?title=2.8%27%27_TFT_Touch_Shield . Пишут, что использует только пины D4-D13 и A0-A3. Т.е. пины 2 и 3 для моего прерывания, вроде как, доступны. Будет-ли он у меня работать выдадвая графику и не мешая работе внешнего прерывания?
"пин 21 (прерывание 2)" - это получается пин МК, не пин Меги? На этом пине ICSP сидит, может из-за этого? Не пробовали прерывания на порту К использовать? Это на меге ноги А8-А15.
Или может прерывания очень долго обрабатываются - код в обработчике прерывания большой? У меня из-за большой загрузки МК (таймер_1 очень часто вызывался) практически не работал тач-скрин, пришлось от него отказаться.
21 pin на плате Меги, он же Arduino Mega Interrrupt #2.
На самом деле у меня, пока, 2 разных скетча. 1й - графика и сбор необходимых данных (переменных). 2й - собственно счектч обработки прерываний на основе "собранных данных". Графика без подключенного провода CrossZero работает, всё как надо. Мега без экрана с подключенным проводом CrossZero работает как надо, прерывания обрабатываются.
Запускаю скетч 1й с экраном, втыкаю провод CrossZero и всё - белый экран. В скетче кода прерывания нет! Выдергиваю провод CrossZero - Мега перезагружается, графика в порядке.
Всё, разобрался. Ошибка в коде с обращением к Interrrupt была. Точнее обращения не было и Мега сразу уходила в бесконечное прерывание... ))) Но тем не менее огромное спасибо за участие и помощь. Благодаря Вам осенило и просмотрел код подробнее. СПАСИБО)))
Отличия от того что выше - нет необходимости в функции utf8rus (для этого пришлось чуть подправить файл OLEDDisplay.cpp, добавив туда свою функцию utf8ascii).
... в том, что это не руссификация Adafruit-GFX, а отдельной библиотеки для OLED-дисплеев.
Не спорю. Но по идее так же можно было бы реализовать в Adafruit-GFX. Было бы время...
И что касается именно Adafruit-GFX - здесь почему-то обсуждается лишь замена "системного" фонта этой библиотечки. Однако хорошо бы иметь набор руссифицированных фонтов в его формате. В том числе и системного размера 5x7. Тогда системный можно было бы и не трогать вообще.
Лишь один человек выложил подобные фонты - как раз перед моим предыдущим сообщением. К сожалению, 5x7 там нет, а ведь он самый востребованный...
Никто не выкладывает шрифты, за редким исключением, потому что это тупо нелегально. Большинство шрифтов являются интеллектуальной собственностью и их запрещено распространять.
Поэтому, конвертните сами для adafruit gfx, её собственной утилитой, любой шрифт, любой размер, на любой вкус:
Никто не выкладывает шрифты, за редким исключением, потому что это тупо нелегально. Большинство шрифтов являются интеллектуальной собственностью и их запрещено распространять.
Сильно сомневаюсь что дело в интеллектуальной собственности на давным-давно существующие растровые шрифты. Английские фонты найти ведь совершенно не проблема. А вот нормальных русских растровых тупо нет.
negavoid пишет:
Поэтому, конвертните сами для adafruit gfx, её собственной утилитой, любой шрифт, любой размер, на любой вкус
Спасибо, конечно. Мне проще с форматами разобраться и свой конвертор набросать чем Linux ставить. Да и не горит пока - для текущей задачи обошелся тем что есть.
Кроме того те конверторы что я встречал в мелкие форматы (а 5x7 к ним относится) конвертят крайне криво.
А чем не устраивает руссифицированный шрифт 5x7, выложенный в данной теме?
У него формат не тот.
Ну тут ты меня насмешил :)
Оказывается шрифт из библиотеки Adafruit-GFX имеет не тот формат, а библиотека про это не знает и продолжает его отображать :)
Ну допустим я их конвертну, а ты опять скажешь, что это не тот формат.
Впрочем лично мне это не нужно - я могу и такие шрифты использовать (без конвертации).
Оказывается шрифт из библиотеки Adafruit-GFX имеет не тот формат, а библиотека про это не знает и продолжает его отображать :)
Так вы посмотрели файлы фонтов в папочке Fonts? Я про папочку в каталоге собственно библиотеки Adafruit-GFX, если что.
arduino328 пишет:
Ну допустим я их конвертну, а ты опять скажешь, что это не тот формат.
Впрочем лично мне это не нужно - я могу и такие шрифты использовать (без конвертации).
Чего ради - будут нужного формата - скажу спасибо. Или даже так - СПАСИБО! Только сомневаюсь - тут ваш конвертор не поможет...
Спасибо, конечно. Мне проще с форматами разобраться и свой конвертор набросать чем Linux ставить. Да и не горит пока - для текущей задачи обошелся тем что есть.
Можно и не ставить, можно скачать freetype под виндовс и собрать fontconvert.exe, уже готовый конвертер, РОДНОЙ для библиотеки adafruit. Это всё же попроще, чем разбираться с форматами и писать свой конвертер.
Можно и не ставить, можно скачать freetype под виндовс и собрать fontconvert.exe, уже готовый конвертер, РОДНОЙ для библиотеки adafruit. Это всё же попроще, чем разбираться с форматами и писать свой конвертер.
Да не будет оно работать - откуда он знает форматы тех фонтов что я давал по ссылке?
Сильно сомневаюсь что дело в интеллектуальной собственности на давным-давно существующие растровые шрифты.
А Вы чем-то можете аргументировать свои сомнения?
Открываем ГК РФ и читаем статью 1281 ч.1.:
Цитата:
. Исключительное право на произведение действует в течение всей жизни автора и семидесяти лет, считая с 1 января года, следующего за годом смерти автора.
Исключительное право на произведение, созданное в соавторстве, действует в течение всей жизни автора, пережившего других соавторов, и семидесяти лет, считая с 1 января года, следующего за годом его смерти.
Вы уверены, что авторы всех используемых Вами шрифтов умерли, и с момента их смерти прошло более 70 лет?
Например, срок действия авторских прав на самые первые шаги кинематографа еще не истек, Вы считаете, что массовое использование (и разработка) растровых шрифтов начались намного раньше первого кино?
Пробовал, но как только в программе вводишь русские символы, на экране они занимают 2 знакоместа или 2 байта, не знаю как правильно объяснить...
Во второй строчке экрана, набраны буквы "АБВГД". Вот что он отображает, перед каждой буквой какой то значок. Букву "А" перерисовал в редакторе, отображается правильно. Остальные не трогал.
есть виндовый конвертер для шрифтов адафруит и утфт с возможностью редактирования готовых с-файлов. в комплекте положил наши любимые русские дос шрифты 8х16. можете изготовить свой любого размера, можете сконвертировать любой шрифт через промежуточный формат bdf (например с помощью замечательного FontForge). есть возможность сменить кодировку шрифту. полученные в результате русские адафруит-шрифты работают через utf8rus(), русские утфт-шрифты выводятся без проблем в моем дополнении utft_binFonts
Русификация библиотеки Adafruit-GFX и вывод русских букв на дисплей в кодировке UTF-8 из Arduino IDE
При этом русские буквы вводятся стандартным способом через русскую клавиатуру и отображаются в Arduino IDE как русские символы.
Мне понравились библиотеки Adafruit-GFX и Adafruit-SSD1306 (https://github.com/adafruit) для OLED Display 0.96 128x64 (http://arduino-project.net/oled-l2c-arduino-uno/).
Но (как и следовало ожидать) в них не оказалось русского шрифта. Добавить его оказалось несложно: нужно лишь заменить в файле glcdfont.c из Adafruit-GFX некоторые символы на русские буквы (в нужной кодировке).
Но шрифт рассчитан на однобайтовую кодировку букв, а Arduino IDE использует (для русских букв) двухбайтовую кодировку UTF-8.
Однако, при внимательном рассмотрении (и чтении Википедии) оказалось, что в русской кодировке UTF-8 прослеживается определенная последовательность. И она позволяет несложным путем перекодировать из UTF-8 в однобайтовую русскую кодировку Windows-1251, которая и была выбрана для замены букв.
Функция utf8rus() получает исходную строку, символы с кодами 0x00-0xBF пропускает без изменения в выходную строку, а в оставшихся кодах отбирает русские буквы и перекодирует их.
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;
}
Применять ее можно внутри команд печати строк:
display.println(utf8rus("Тест"));
Саму функцию можно добавить в скетч, либо в виде отдельного файла положить в каталог скетча (как и сделано в примере).
В архиве utf8rus.zip прилагаются:
- файл glcdfont.c с русскими буквами для замены в Adafruit-GFX;
- пример OledRusTest для демонстрации русских (и других) символов и работы функции utf8rus();
- пример OledSymbolTest для демонстрации использования динамических символов.
Обращаю внимание в примерах на то, что мой дисплей подключается через SPI.
Помогите вывести на матрицу MAX7219 ардуино уно знак градуса "°" Как ни пытаюсь не получается. В скетче виден а на матрице фигня. Соседние символы пробовал-тоже самое.
только не понятно куда именно в файл glcdfont.c полученый кусок в хексе поместить, подозреваю, что можно просто бегло просмотрев найти именно свой символ и его заменить
Для примера используем ту же букву Й:
В кодировке Windows-1251 код символа Й = 0xC9, в десятичной системе = 201. В файле glcdfont.c (из архива utf8rus2.zip) массив символов начинается со строки 16. Сложив 16 и 201 получаем, что символ Й находится в строке 217.
Как вывести знак градус на MAX7219. Вместо градуса выходит "Г+-"
arduinec Грубо ответил. Я спрашивал не о дисплее а о матрице MAX7219. Я не программист. Информация: Плата Arduino Uno. 8 матриц MAX7219 в 1 ряд. DHT11, DS1307 скетч здесь :http://bit.ly/2gUk99l Библиотеки взяты по ссылке под скетчем на youtube ."°" Так он отображается в скетче(то бишь правильно.) На матрице "Г±". Соседние символы пробовал и другие пробовал-всё безуспешно.
Gogi, на ваши вопросы "как" есть супер-универсальный ответ: "Молча!".
Для более разумных ответов не хватает информации: всё ли было сделано как описано в посте 201 (например)?
Грубо ответил. Я спрашивал о матрице MAX7219 а не о дисплее. Я не программист. Информация: Плата Arduino Uno. 8 матриц MAX7219 в 1 ряд. DHT11, DS1307 скетч здесь :http://bit.ly/2gUk99l Библиотеки взяты по ссылке под скетчем на youtube."°" Так он отображается в скетче(то бишь правильно.) На матрице "Г±". Соседние символы пробовал и другие пробовал-всё безуспешно. Вот видео:https://www.youtube.com/watch?v=x7MATkNGZt0
Краткие итоги предыдущих 200 постов
Для русификации библиотеки 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() с экономным использованием оперативной памяти.
В посте 46 показан 2.8" TFT Touch Shield для Uno и Mega, и прилагается полный набор библиотек и примеров для него.
В посте 80 описаны изменения в шрифте для проекта Transistor Tester.
Доброго дня всем.
Столкнулся с такой проблемой: дома работаю с ардуино, всё хорошо. Ещё раз спасибо уважаемому arduinec и всем, кто помогал. Но вот решил подключить на работе - шрифты не идут - кракозябры рисует. Среда разработки не ругается, сообщений не выдает... Пробовал переустанавливать, и даже тупо скопировать полностью папку ардуино с домашнего на рабочий комп - нивкакую... ((
В чем мой косяк? Где что исправить?
В либе адафрут гфх поменяйте файл glcdfont.c
Опосля обязательно перезапустите дурину - там файлы из кеша берутся при компиляции
З.Ы. про это половина сообщений в этой теме
Всем привет) А я вот заказала на алиэкспресс телефон, а он на китайском походу. Что делать? Прошивать наверное надо?
arduinec, я все больше склоняюсь к тому, чтобы русский шрифт оформить отдельным массивом либо вообще вынести в отдельный хидер.
Всем привет) А я вот заказала на алиэкспресс телефон, а он на китайском походу. Что делать? Прошивать наверное надо?
Это причем тут?
В либе адафрут гфх поменяйте файл glcdfont.c
Опосля обязательно перезапустите дурину - там файлы из кеша берутся при компиляции
З.Ы. про это половина сообщений в этой теме
Разумеется, заменил. Не хочет и всё тут...
А латиницу корректно отображает?
А версии ардуино иде одинаковые?
А если скетч из дома принести и не редактируя залить - также кракозябры?
Еще при компиляции могет выдаватся сообщение про то что найдено несколько либ гфх и будет использована - эта. А не та, в которой все поменяно
С латиницей Ok. Скетч один и тот же. Ардуина одна и та же.
Еще при компиляции могет выдаватся сообщение про то что найдено несколько либ гфх и будет использована - эта. А не та, в которой все поменяно
Есть такая штука. Как побороть? Подскажете?
удалите лишние (перенесите в папку в корне диска с именем "лишнее")
удалите лишние (перенесите в папку в корне диска с именем "лишнее")
Прошу прощения. Для особо одаренных... Как именно это сделать?
e
Еще при компиляции могет выдаватся сообщение про то что найдено несколько либ гфх и будет использована - эта. А не та, в которой все поменяно
Есть такая штука. Как побороть? Подскажете?
Например, можно заменить glcdfont.c во всех Adafruit-GFX.
[/quote]
Например, можно заменить glcdfont.c во всех Adafruit-GFX.
[/quote]
Тоже пробовал - не помогает. Ниче понять не могу((( Есть где-то инструкция подробная для начинающих, как устанавливать библиотеки, как их удалять - прям пошагово? Буду начинать с начала...
Есть где-то инструкция подробная для начинающих, как устанавливать библиотеки, как их удалять - прям пошагово?
http://atmel.ucoz.ru/publ/ustanovka_dopolnitelnykh_bibliotek_arduino/2-1...
Есть где-то инструкция подробная для начинающих, как устанавливать библиотеки, как их удалять - прям пошагово?
http://atmel.ucoz.ru/publ/ustanovka_dopolnitelnykh_bibliotek_arduino/2-1...
Спасибо большое, буду изучать
Появился у меня недавно 2.8" TFT Touch Shield для Uno и Mega
Вопрос к уважаемому arduinec.
Имеется Arduino Mega 2560 и 2,4" TFT, много обсуждаемый на форуме. С графикой порядок, даже русские шрифты, благодаря Вам и этому форуму... Но.
Запонадобилось соорудить диммер с графическим экраном и, соответственно, внешним прерыванием по переходу через ноль. Без выше обсуждаемого экрана всё чудесно, всё работает. Подключаю к ардуине экран, затем втыкаю пин 21 (прерывание 2) - белый экран. Перепробовал все доступные прерывания - одно и то же. Прерывания 0 и 1 сразу в белый экран, даже без подключения живого провода перехода через ноль.
Как быть с этим экраном? Есть возможность обойти проблему?
В качестве альтернативы(замены) нашел у китайцев похожего на Ваш TFT 2.8". Вот здесь: https://www.elecrow.com/wiki/index.php?title=2.8%27%27_TFT_Touch_Shield . Пишут, что использует только пины D4-D13 и A0-A3. Т.е. пины 2 и 3 для моего прерывания, вроде как, доступны. Будет-ли он у меня работать выдадвая графику и не мешая работе внешнего прерывания?
Заранее спасибо.
"пин 21 (прерывание 2)" - это получается пин МК, не пин Меги? На этом пине ICSP сидит, может из-за этого? Не пробовали прерывания на порту К использовать? Это на меге ноги А8-А15.
Или может прерывания очень долго обрабатываются - код в обработчике прерывания большой? У меня из-за большой загрузки МК (таймер_1 очень часто вызывался) практически не работал тач-скрин, пришлось от него отказаться.
21 pin на плате Меги, он же Arduino Mega Interrrupt #2.
На самом деле у меня, пока, 2 разных скетча. 1й - графика и сбор необходимых данных (переменных). 2й - собственно счектч обработки прерываний на основе "собранных данных". Графика без подключенного провода CrossZero работает, всё как надо. Мега без экрана с подключенным проводом CrossZero работает как надо, прерывания обрабатываются.
Запускаю скетч 1й с экраном, втыкаю провод CrossZero и всё - белый экран. В скетче кода прерывания нет! Выдергиваю провод CrossZero - Мега перезагружается, графика в порядке.
Значит надо Вашу схему смотреть.
Лучше создайте отдельную тему, это к русификации библиотеки не относится.
P.S. По-идее - 21-я нога на Меге - это 43-я нога на кристалле, знаит это PD0/SCL/INT0, почему в Ардуино назвали его как Interrrupt #2 - непонятно.
Всё, разобрался. Ошибка в коде с обращением к Interrrupt была. Точнее обращения не было и Мега сразу уходила в бесконечное прерывание... ))) Но тем не менее огромное спасибо за участие и помощь. Благодаря Вам осенило и просмотрел код подробнее. СПАСИБО)))
библиотека UTFT
Я начал тему по русификации UTFT
Если еще актуально - http://arduino.ru/forum/apparatnye-voprosy/utft-rusifikatsiya-proportsionalnym-shriftom
Здравствуйте не могли бы вы руссифицировать библеотеку TFT_22_ILI9225
Roboto Regular 10 - 14 pt
Roboto Thin 10 -14 pt
https://yadi.sk/d/FwQheqH73LD8WM
Roboto Black 10 -14 pt
Roboto Bold 10 -14 pt
Roboto Bold Condensed 10 -14 pt
https://yadi.sk/d/PvlcK_KW3LDdJd
Мой вариант руссификации дисплейчиков OLED: https://yadi.sk/d/lVw7y7Ey3M4EsE
Отличия от того что выше - нет необходимости в функции utf8rus (для этого пришлось чуть подправить файл OLEDDisplay.cpp, добавив туда свою функцию utf8ascii).
Шрифты находятся в файле OLEDDisplayFonts.h. С русским я туда экспортировал только Font5x7.
Отличия от того что выше ,,,
... в том, что это не руссификация Adafruit-GFX, а отдельной библиотеки для OLED-дисплеев.
... в том, что это не руссификация Adafruit-GFX, а отдельной библиотеки для OLED-дисплеев.
Не спорю. Но по идее так же можно было бы реализовать в Adafruit-GFX. Было бы время...
И что касается именно Adafruit-GFX - здесь почему-то обсуждается лишь замена "системного" фонта этой библиотечки. Однако хорошо бы иметь набор руссифицированных фонтов в его формате. В том числе и системного размера 5x7. Тогда системный можно было бы и не трогать вообще.
Лишь один человек выложил подобные фонты - как раз перед моим предыдущим сообщением. К сожалению, 5x7 там нет, а ведь он самый востребованный...
К сожалению, 5x7 там нет, а ведь он самый востребованный...
А чем не устраивает руссифицированный шрифт 5x7, выложенный в данной теме?
А чем не устраивает руссифицированный шрифт 5x7, выложенный в данной теме?
У него формат не тот. Просто сравните его с фонтами в папке Fonts. Вот если бы конвертнуть эти фонты http://arduino.ru/forum/programmirovanie/russkie-shrifty-dlya-biblioteki-u8glib в формат Adafruit_GFX - было бы очень полезно...
Никто не выкладывает шрифты, за редким исключением, потому что это тупо нелегально. Большинство шрифтов являются интеллектуальной собственностью и их запрещено распространять.
Поэтому, конвертните сами для adafruit gfx, её собственной утилитой, любой шрифт, любой размер, на любой вкус:
http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...
Никто не выкладывает шрифты, за редким исключением, потому что это тупо нелегально. Большинство шрифтов являются интеллектуальной собственностью и их запрещено распространять.
Сильно сомневаюсь что дело в интеллектуальной собственности на давным-давно существующие растровые шрифты. Английские фонты найти ведь совершенно не проблема. А вот нормальных русских растровых тупо нет.
Поэтому, конвертните сами для adafruit gfx, её собственной утилитой, любой шрифт, любой размер, на любой вкус
Спасибо, конечно. Мне проще с форматами разобраться и свой конвертор набросать чем Linux ставить. Да и не горит пока - для текущей задачи обошелся тем что есть.
Кроме того те конверторы что я встречал в мелкие форматы (а 5x7 к ним относится) конвертят крайне криво.
А чем не устраивает руссифицированный шрифт 5x7, выложенный в данной теме?
У него формат не тот.
Ну тут ты меня насмешил :)
Оказывается шрифт из библиотеки Adafruit-GFX имеет не тот формат, а библиотека про это не знает и продолжает его отображать :)
Вот если бы конвертнуть эти фонты http://arduino.ru/forum/programmirovanie/russkie-shrifty-dlya-biblioteki-u8glib в формат Adafruit_GFX - было бы очень полезно...
Ну допустим я их конвертну, а ты опять скажешь, что это не тот формат.
Впрочем лично мне это не нужно - я могу и такие шрифты использовать (без конвертации).
Кроме того те конверторы что я встречал в мелкие форматы (а 5x7 к ним относится) конвертят крайне криво.
В посте #27 данной темы приводится скетч для конвертации шрифтов с помощью Ардуино.
Оказывается шрифт из библиотеки Adafruit-GFX имеет не тот формат, а библиотека про это не знает и продолжает его отображать :)
Так вы посмотрели файлы фонтов в папочке Fonts? Я про папочку в каталоге собственно библиотеки Adafruit-GFX, если что.
Ну допустим я их конвертну, а ты опять скажешь, что это не тот формат.
Впрочем лично мне это не нужно - я могу и такие шрифты использовать (без конвертации).
Чего ради - будут нужного формата - скажу спасибо. Или даже так - СПАСИБО! Только сомневаюсь - тут ваш конвертор не поможет...
Можно и не ставить, можно скачать freetype под виндовс и собрать fontconvert.exe, уже готовый конвертер, РОДНОЙ для библиотеки adafruit. Это всё же попроще, чем разбираться с форматами и писать свой конвертер.
Можно и не ставить, можно скачать freetype под виндовс и собрать fontconvert.exe, уже готовый конвертер, РОДНОЙ для библиотеки adafruit. Это всё же попроще, чем разбираться с форматами и писать свой конвертер.
Да не будет оно работать - откуда он знает форматы тех фонтов что я давал по ссылке?
Да не нужны те шрифты, они подобным же образом сконвертированы из "нормальных, обычных". А форматы обычных знает libfreetype.
MikroElektronika GLCD Font Creator www.mikroe.com
Сидите и рисуйте какие хошь шрифты
Сильно сомневаюсь что дело в интеллектуальной собственности на давным-давно существующие растровые шрифты.
А Вы чем-то можете аргументировать свои сомнения?
Открываем ГК РФ и читаем статью 1281 ч.1.:
Вы уверены, что авторы всех используемых Вами шрифтов умерли, и с момента их смерти прошло более 70 лет?
Например, срок действия авторских прав на самые первые шаги кинематографа еще не истек, Вы считаете, что массовое использование (и разработка) растровых шрифтов начались намного раньше первого кино?
Пробовал, но как только в программе вводишь русские символы, на экране они занимают 2 знакоместа или 2 байта, не знаю как правильно объяснить...
Во второй строчке экрана, набраны буквы "АБВГД". Вот что он отображает, перед каждой буквой какой то значок. Букву "А" перерисовал в редакторе, отображается правильно. Остальные не трогал.
Для того, чтобы русские буквы нормально выводились, нужно использовать функцию utf8rus(). Она есть в архиве и в примере показано как она работает.
Судя по фотографии, файл glcdfont.c не заменён, то есть русских букв в Adafruit-GFX нет.
AndrF & All
есть виндовый конвертер для шрифтов адафруит и утфт с возможностью редактирования готовых с-файлов. в комплекте положил наши любимые русские дос шрифты 8х16. можете изготовить свой любого размера, можете сконвертировать любой шрифт через промежуточный формат bdf (например с помощью замечательного FontForge). есть возможность сменить кодировку шрифту. полученные в результате русские адафруит-шрифты работают через utf8rus(), русские утфт-шрифты выводятся без проблем в моем дополнении utft_binFonts
Спасибо. Бум смотреть.
[quote=arduinec]
Русификация библиотеки Adafruit-GFX и вывод русских букв на дисплей в кодировке UTF-8 из Arduino IDE
При этом русские буквы вводятся стандартным способом через русскую клавиатуру и отображаются в Arduino IDE как русские символы.
Мне понравились библиотеки Adafruit-GFX и Adafruit-SSD1306 (https://github.com/adafruit) для OLED Display 0.96 128x64 (http://arduino-project.net/oled-l2c-arduino-uno/).
Но (как и следовало ожидать) в них не оказалось русского шрифта. Добавить его оказалось несложно: нужно лишь заменить в файле glcdfont.c из Adafruit-GFX некоторые символы на русские буквы (в нужной кодировке).
Но шрифт рассчитан на однобайтовую кодировку букв, а Arduino IDE использует (для русских букв) двухбайтовую кодировку UTF-8.
Однако, при внимательном рассмотрении (и чтении Википедии) оказалось, что в русской кодировке UTF-8 прослеживается определенная последовательность. И она позволяет несложным путем перекодировать из UTF-8 в однобайтовую русскую кодировку Windows-1251, которая и была выбрана для замены букв.
Функция utf8rus() получает исходную строку, символы с кодами 0x00-0xBF пропускает без изменения в выходную строку, а в оставшихся кодах отбирает русские буквы и перекодирует их.
Применять ее можно внутри команд печати строк:
display.println(utf8rus("Тест"));
Саму функцию можно добавить в скетч, либо в виде отдельного файла положить в каталог скетча (как и сделано в примере).
В архиве utf8rus.zip прилагаются:
- файл glcdfont.c с русскими буквами для замены в Adafruit-GFX;
- пример OledRusTest для демонстрации русских (и других) символов и работы функции utf8rus();
- пример OledSymbolTest для демонстрации использования динамических символов.
Обращаю внимание в примерах на то, что мой дисплей подключается через SPI.
https://yadi.sk/d/FWO6Y1NwiqLVu
Помогите вывести на матрицу MAX7219 ардуино уно знак градуса "°" Как ни пытаюсь не получается. В скетче виден а на матрице фигня. Соседние символы пробовал-тоже самое.
только не понятно куда именно в файл glcdfont.c полученый кусок в хексе поместить, подозреваю, что можно просто бегло просмотрев найти именно свой символ и его заменить
Для примера используем ту же букву Й:
В кодировке Windows-1251 код символа Й = 0xC9, в десятичной системе = 201. В файле glcdfont.c (из архива utf8rus2.zip) массив символов начинается со строки 16. Сложив 16 и 201 получаем, что символ Й находится в строке 217.
Как вывести знак градус на MAX7219. Вместо градуса выходит "Г+-"
Gogi, на ваши вопросы "как" есть супер-универсальный ответ: "Молча!".
Для более разумных ответов не хватает информации: всё ли было сделано как описано в посте 201 (например)?
arduinec Грубо ответил. Я спрашивал не о дисплее а о матрице MAX7219. Я не программист. Информация: Плата Arduino Uno. 8 матриц MAX7219 в 1 ряд. DHT11, DS1307 скетч здесь :http://bit.ly/2gUk99l Библиотеки взяты по ссылке под скетчем на youtube ."°" Так он отображается в скетче(то бишь правильно.) На матрице "Г±". Соседние символы пробовал и другие пробовал-всё безуспешно.
[quote=arduinec]
Gogi, на ваши вопросы "как" есть супер-универсальный ответ: "Молча!".
Для более разумных ответов не хватает информации: всё ли было сделано как описано в посте 201 (например)?
Грубо ответил. Я спрашивал о матрице MAX7219 а не о дисплее. Я не программист. Информация: Плата Arduino Uno. 8 матриц MAX7219 в 1 ряд. DHT11, DS1307 скетч здесь :http://bit.ly/2gUk99l Библиотеки взяты по ссылке под скетчем на youtube."°" Так он отображается в скетче(то бишь правильно.) На матрице "Г±". Соседние символы пробовал и другие пробовал-всё безуспешно. Вот видео:https://www.youtube.com/watch?v=x7MATkNGZt0