GEM - Графическое меню для Arduino

Тема в разделе "Глядите, что я сделал", создана пользователем Spirik, 22 фев 2018.

  1. Spirik

    Spirik Нерд

    Отнюдь! Исключительно для широты охвата - проект расчитан на международную аудиторию. Большое количество пользователей из стран Азии и Европы. Объём документации обширен, заниматься переводом довольно трудоёмкая задача. Английский отлично подходит для написания технических текстов. Автоматический перевод с английского языка сейчас работает очень хорошо (что не всегда можно сказать об обратном переводе) - так что даже пользователи с незнанием английского языка имеют доступ к актуальной документации: при написании текстов я всегда стараюсь делать контрольный прогон через Google Translate (или встроенный переводчик в браузере) на русский язык, чтобы убедиться, что смысл не теряется и описание остаётся технически корректным.
     
    Последнее редактирование: 5 янв 2024
    Антон336699 нравится это.
  2. Если честно так и подумал, что ориентация идет на западного пользователя. Хорошая у вас вышла библиотека, надо будет как нибудь в ней разобраться. Щас все силы брошены на покорение STM32 и его CMSIS))), HAL не зашел
     
    Spirik нравится это.
  3. Spirik

    Spirik Нерд

    @Антон336699 Смело обращайтесь за помощью или разъяснениями, если вдруг потребуется, буду рад помочь! Здесь или на Гитхабе (там тоже вполне себе можно по-русски в Issues или Discussions постить).
     
    Антон336699 нравится это.
  4. Airbus

    Airbus Радиохулиган Модератор

    Хорошая работа! С латиницей проще работать, кириллица требует доп ресурсов МК. Ну а описание очень многие авторы на Гите сделали по английскии что конечно не всегда удобно но что есть то есть. Такой вот стандарт.
     
    issaom и Spirik нравится это.
  5. Spirik

    Spirik Нерд

    Кириллица в элементах интерфейса в целом поддерживается в версии под U8g2 (потому что эта библиотека поддерживает UTF8 шрифты) при активации методом `enableCyrillic()`, с ограничением в том, что нет поддержки редактирования строк с кириллическими символами (это ограничение обуcловлено сложностью работы с мультибайтовыми последовательностями UTF8). Так что при наличии достаточного количества ресурсов МК, это вполне рабочий вариант. Так же в самой свежей версии GEM появилась возможность переопределять шрифты по-умолчанию - об этом сделаю отдельный пост чуть позже.
     
  6. Спасибо, буду иметь ввиду, у меня малость другой подход, изучаю как работает и пытаюсь применить полученные знания в своих проектах.
     
  7. parovoZZ

    parovoZZ Гуру

    если не путаться в кодировках, то ничем не отличается от любого другого шрифта.
    каких? Ну кроме того, что в латинице чуть меньше букв. Я работал только с кириллицей - каких-то особенностей не заметил.

    всё как в совке... им конфетку, а своим то, что осталось.

    очень странный подход... Почему наши должны мучаться, а не они? На том же гитхабе есть проекты от наших соотечественников, у которых сайты и на русском языке.
    Во времена технической революции Англия не утруждала себя переводом документации на французский язык... В результате международным стал английский...
     
    Feofan и Антон336699 нравится это.
  8. Spirik

    Spirik Нерд

    Базовый пример из состава библиотеки (Example-01_Basic) на UNO R3 занимает 21274 байта (65%) постоянной и 950 байтов (46%) временной памяти. В то же время кириллическая версия этого примера (Example-01_Basic_Cyr) занимает 27730 байтов (85%) и 1018 байтов (49%) соответственно. Сказывается как размер шрифта (таблица символов UTF8 помимо ASCII символов содержит также мультибайтовые символы из расширенного набора, в данном случае - 2-х байтовую кириллицу; а, скажем китайские иероглифы будут и по 3 байта занимать), так и, вероятно, внутренние в U8g2 алгоритмы работы с такими шрифтами и таблицами символов (не спроста поддержку UTF8 там нужно предварительно активировать отдельно) - всё-таки элементы байтового массива представляют собой уже не просто единичный символ, это может быть часть последовательности из нескольких байт, формирующих один символ. Отсюда возникают сложности с перебором, выделением фиксированной памяти под такие строки, как следствие более ресурсоёмкие алгоритмы.
     
    Последнее редактирование: 6 янв 2024
  9. parovoZZ

    parovoZZ Гуру

    такая проблема возникает, когда мы создаём мультиязычный интерфейс наружу. Много чего в интернете на UTF8, а вот почтовики ещё на ASCII таблицах. Но когда мы замкнуты внутри себя, у нас всего один набор символов, то для чего в принципе нам UTF8? Взяли любую удобную нам кодировку и в ней и работаем. Символы, которые нам не нужны, просто не тянем в прошивку.
     
  10. Spirik

    Spirik Нерд

    И U8g2 (поверх которой работает GEM) это как раз именно такой случай.
     
  11. parovoZZ

    parovoZZ Гуру

    GEM - это же просто графическое меню? С чем оно умеет общаться снаружи и по каким интерфейсам?
     
  12. Spirik

    Spirik Нерд

    GEM - это библиотека, позволяющая реализовать меню поверх одной из трёх поддерживаемых графических библиотек: AltSerialGraphicLCD, U8g2 и Adafruit GFX. В вопросах вывода текста (и графики) на экран она целиком и полностью полагается на возможности, предоставляемые этими библиотеками, и умеет работать со шрифтами и наборами символов, поддерживаемыми этими библиотеками. Из них только U8g2 поддерживает работу как с ASCII, так и с UTF8 шрифтами, поэтому только она позволяет реализовать мультиязычность в том виде и с теми ограничениями, о которых я рассказал выше.
     
  13. Spirik

    Spirik Нерд

    [​IMG]
    Продолжая тему интернационализации, в версии 1.5.1 наконец добавилась (а точнее, упростилась) поддержка кастомных шрифтов:
    • Методы `::setFontBig()` и `::setFontSmall()` U8g2 и Adafruit GFX версий GEM для задания "большого" и "маленького" шрифта. Большой используется для печати пунктов меню (если заданная высота пункта это позволяет), а маленький - для вывода заголовка страницы меню (и пунктов меню, если большой шрифт всё-таки не уместился). Рекомендуется использовать моноширинный шрифт, особенно при наличии редактируемых переменных, поскольку математика, рассчитывающая умещающееся кол-во символов, опирается на фиксированное значение, заданное автором скетча при указании шрифта. Подробнее о формате шрифта (и поставляющихся вместе с библиотекой вариантах) для версии под Adafruit GFX можно узнать здесь. Список доступных шрифтов версии под U8g2 здесь;
    • Поддержка UTF8 шрифтов в U8g2 версии GEM с использованием метода `GEM_u8g2::enableUTF8()` (только для заголовков страниц и пунктов меню - редактирование строк с UTF8 символами в них не поддерживается).
    Подробности доступны в соответствующем разделе wiki.
     
  14. ostrov

    ostrov Гуру

    По опыту скажу, эти оледы ненадежные, зависают. Я их массово использовал на одном проекте, штук за сотню, так вот каждый десятый и даже больше просто останавливались через какое-то время, от сорока минут и далее. Пришлось переделывать на индикаторы с TM1637, не так красиво, зато работаю уже хрен знает сколько. Хорошо, что перепаивать ничего не пришлось, ноги почти совпадают.
     
  15. parovoZZ

    parovoZZ Гуру

    По опыту скажу, что эти светодиоды надёжные, как немецкие танки. Уже лет 7 мои 450 светодиодов радуют меня днями напролёт.
    А зависать там нечему - внутри них нет мк, нет программного счетчика.
    Ах, да. Покупал я их у официального представителя производителя.
    Обсуждать отбраковку с алику считаю абсолютно пустым занятием.
     
  16. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Че-то не понял. при чем OLED-ы и при чем светодиоды ? Или я что-то проглядел ?
    Если светодиод - просто диод, то да, там ничего нет, кроме п-н перехода. Но если вы про WS2812 - то в них схема довольно навороченная. Не МК конечно, но всеже. Счетчик там есть. И скорее всего не один.
     
    Последнее редактирование: 17 янв 2024
  17. Airbus

    Airbus Радиохулиган Модератор

    В Германии у дяди Ганса покупал?
     
  18. Airbus

    Airbus Радиохулиган Модератор

    ТМ1637 хорошая штука! Только вот как на ней такое мню сделать?