а можно ли FreeDefaultFonts.h просто подогнать под размер ширина и высота. дело в том что
myGLCD.setTextSize(3); за большой а 2 за маленкий и ширено нужна уже. был бы уже стандартный фиг с ним. но подогнать его, может в FreeDefaultFonts.h можно подправить?
8 не занаю откуда взялась а 2 забыл закоментить. стоп если я коменчу 2 строку то дает ошибку компиляции ругаясь на myGLCD.setFont(&FreeSerifItalic12pt7b);
ошибка no matching function for call to 'UTFTGLUE::setFont(const GFXfont*)'
Придётся видимо порисовать и заменить родной шрифт в библиотеке на нужный без привлечения сторонних источников ...
Не, вместо того чтоб шрифты перерисовывать - более правильно переделать функцию рисования символа, чтоб она не только выводила те точки, что относятся в букве - но и все пустые закрашивала фоновым цветом.
В принципе ничего сложного, изменения вряд превысят 10-15 строк - там либа простая. Зато можно будет использовать любые адафрутовские фонты, а не только те, что "перерисуешь"
MaksVV машина Subaru c электронной педалью акселератора.
железо уже сделано: 32U4 общается с ЭБУ, с GPS, выводит на OLED по I2C, отслеживает нажатия SKRHABE10, отслеживает уровень от родной педали, отслеживает сигналы от датчика скорости, выставляет уровень замещающий родную педаль через ЦАП по I2C. Сброс по тормозу, сцеплению, нейтрали - аппартный.
Всё это работает. Изучаю алгоритмы поддержания скорости ориентируясь на сигналы с датчика скорости.
мда, тут нужно конечно очень аккуратно. Предоставить ардуине такие возможности как педалировать автомобилем.
по алгоритму только опытным путём. ну на первый взгяд напрашивается простой алгоритм. Если скорость падает относительно уставки чуть чуть добавляем газ, если выше уставки - убавляем. понятно, что на практике все не так просто , но ты это и так знаешь. Нет у меня не было опыта с этим. Такие вещи я себе не доверяю. Скилла не хватает.
Не, вместо того чтоб шрифты перерисовывать - более правильно переделать функцию рисования символа, чтоб она не только выводила те точки, что относятся в букве - но и все пустые закрашивала фоновым цветом.
В принципе ничего сложного, изменения вряд превысят 10-15 строк - там либа простая. Зато можно будет использовать любые адафрутовские фонты, а не только те, что "перерисуешь"
там проблема была не только в мигании , а втом что это всё ещё и очень долго делается, тормозя луп. Так что ещё и по быстродействию нужно сделать круче. Но думаю оно само получится
там проблема была не только в мигании , а втом что это всё ещё и очень долго делается, тормозя луп. Так что ещё и по быстродействию нужно сделать круче. Но думаю оно само получится
Макс, напомни, какой контроллер у вас? Я на Атмеге нормальную скорость перерисовки TFT 320х240 получить не смог - все равно глазом успеваешь заметить, как картинка обновляется. Перешел на СТМ32
Хотя на абсолютный результат не претендую - возможно просто не смог выжать всей скорости
ну да, я правильно помню - проблема в том, что у пропорциональных фонтов нет фона. Вот что написано в файле Adafruit_GFX.cpp (проблема тянется из библиотеки Adafruit_GFX, в либе MCUFIEND_KBV своих средств для вывода текста нет, она Adafruit_GFX использует) :
// NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS.
// THIS IS ON PURPOSE AND BY DESIGN. The background color feature
// has typically been used with the 'classic' font to overwrite old
// screen contents with new data. This ONLY works because the
// characters are a uniform size; it's not a sensible thing to do with
// proportionally-spaced fonts with glyphs of varying sizes (and that
// may overlap). To replace previously-drawn text when using a custom
// font, use the getTextBounds() function to determine the smallest
// rectangle encompassing a string, erase the area with fillRect(),
// then draw new text. This WILL infortunately 'blink' the text, but
// is unavoidable. Drawing 'background' pixels will NOT fix this,
// only creates a new set of problems. Have an idea to work around
// this (a canvas object type for MCUs that can afford the RAM and
// displays supporting setAddrWindow() and pushColors()), but haven't
// implemented this yet.
Пишут. что убрали фон потому что пропорциональные шрифты могут иметь всякие элементы, выступающие за границу буквы - разные "хвостики" и "шляпки" - и поэтому мол заливать фоном все пустые места неправильно. Вместо этого рекомендуют чистить место предварительно - хотя от этого текст будет мигать. Но это типа неизбежно.
Думаю, если не размещать буквы вплотную - их опасения, что стирание одной строки будет цеплять другую - напрасны. В общем, попробую добавить фон, напишу что получится. Только я в отпуск уезжаю, не знаю успею ли.
Просто там вижу Small фонт и Big фонт, надо понять какой из них используется
что-то я помню, там от размера - ставишь setFontSize(2) - берется один фонт, а ставишь например размер 4 - другой. Но что-то не могу найти этот кусок в исходнике.
А может это и не здесь.... графических библиотек, использующих адафруит - их пара десятков как минимум
Командир, гляньте повнимательней - по-моему разница между встроенными и внешними фонтами как раз в том. что встроенные - моноширинные, а внешние - нет. Тогда то, что вы задумали - не поможет
а со штатным шрифтом заливка фона работает, если написать это выбрать черный цвет 0,0,0
ну я вроде об этом и написал на прошлой странице. Библиотека по разному работает со штатными и внешними шрифтами.... Чуть выше (1674) и подробное обьяснение от авторов либы. почему так.
Командир, гляньте повнимательней - по-моему разница между встроенными и внешними фонтами как раз в том. что встроенные - моноширинные, а внешние - нет. Тогда то, что вы задумали - не поможет
В том то и дело что и встроенные не моноширинные насколько я вижу.
моноширеные...... я даже таких слов не знаю все что я понял
это в myGLCD.setFont(BigFont);
{ 142, 5, 8, 8, 0, -10 }, // 0x43 'C' это прописан размер буквы. менял цифры меняется размер но кракозяба получается
// 10x12 [0x43 'C']
0x3F,0x9C,0x7E,0x1F,0x80,0xE0,0x38,0x0E,0x03,0x80,0xE0,0x38,0x77,0x1C,0xFE, а это типа рисунок ее штоли.
если изменить имя файла FreeDefaultFonts.h шрифта то компиляция выдает ошибку. я так понял не находит шрифт. значит он его и использует когда без указания шрифта в скетче
да к стати взял в FreeDefaultFonts.h закинул даные из моего шрифта , подменил, буквы не те отображаются видать мап разный, но буквы стали больше и толще, но появилось мигание:)
нет. без определиния шрифта и смол или биг выбераешь не моргает
кстати, большую часть мигания можно убрать не трогая шрифты.
viki13viki - насколько я вижу в коде, вы выводите на печать надписи все подряд, даже подписи к папаметрам. которые не меняются. Обноволяйте на экране только то. что реально изменилось - этим вы уберете большую часть миганий. да и код начнет исполнятся в несколько раз быстрее, может и остальные мигания не будут так заметны.
Если не определяшь шрифт, то там NULL и включается отображение моноширинного родного шрифта 5х7 и библиотеки AF. Его легко можно перерисовать, но в 5х7 сильно не развернешься ...
обманул друзья только если не определять фонт то не мигает а смол и биг тоже мигает. чудеса
Ну тогда все понятно.
когда не определяешь фонт - берется тот единственный из файла Adafruit-GFX-Library/glcdfont.c. Он выводится с очисткой фона, потому и не мигает. любой другой фонт будет мигать.
Если не определяшь шрифт, то там NULL и включается отображение моноширинного родного шрифта 5х7 и библиотеки AF. Его легко можно перерисовать, но в 5х7 сильно не развернешься ...
надо убрать вывод всех статичных строк из ЛУПа. Одно это рещит 80% проблемы. А для параметров сделать условный вывод - только при изменении
надо убрать вывод всех статичных строк из ЛУПа. Одно это рещит 80% проблемы. А для параметров сделать условный вывод - только при изменении
да не , там страница один раз загружается только: в сетапе и когда тачем на кнопку выбора страницы нажимаешь. А сами параметры да, обновляются в соответствии с поступлением данных с PCM
https://github.com/prenticedavid/MCUFRIEND_kbv
FreeDefaultFonts.h но там не моноширинный шрифт и таблицы - надо много вкуривать, что бы поправить.
Где увидеть Ваш скетч, который работает, но моргает и в каких строках там про шрифт ???
1637 скетч и там закоменчен шрифт
в верху и в сетупе
а можно ли FreeDefaultFonts.h просто подогнать под размер ширина и высота. дело в том что
myGLCD.setTextSize(3); за большой а 2 за маленкий и ширено нужна уже. был бы уже стандартный фиг с ним. но подогнать его, может в FreeDefaultFonts.h можно подправить?
лог отличный. Нам ещё протокол связи со щитком добавлять. я уже боюсь))
1637 строки 2 и 8 зачем ? с tft вообще нигде не вижу общения ?
8 не занаю откуда взялась а 2 забыл закоментить. стоп если я коменчу 2 строку то дает ошибку компиляции ругаясь на myGLCD.setFont(&FreeSerifItalic12pt7b);
ошибка no matching function for call to 'UTFTGLUE::setFont(const GFXfont*)'
Придётся видимо порисовать и заменить родной шрифт в библиотеке на нужный без привлечения сторонних источников ...
Не, вместо того чтоб шрифты перерисовывать - более правильно переделать функцию рисования символа, чтоб она не только выводила те точки, что относятся в букве - но и все пустые закрашивала фоновым цветом.
В принципе ничего сложного, изменения вряд превысят 10-15 строк - там либа простая. Зато можно будет использовать любые адафрутовские фонты, а не только те, что "перерисуешь"
MaksVV машина Subaru c электронной педалью акселератора.
железо уже сделано: 32U4 общается с ЭБУ, с GPS, выводит на OLED по I2C, отслеживает нажатия SKRHABE10, отслеживает уровень от родной педали, отслеживает сигналы от датчика скорости, выставляет уровень замещающий родную педаль через ЦАП по I2C. Сброс по тормозу, сцеплению, нейтрали - аппартный.
Всё это работает. Изучаю алгоритмы поддержания скорости ориентируясь на сигналы с датчика скорости.
мда, тут нужно конечно очень аккуратно. Предоставить ардуине такие возможности как педалировать автомобилем.
по алгоритму только опытным путём. ну на первый взгяд напрашивается простой алгоритм. Если скорость падает относительно уставки чуть чуть добавляем газ, если выше уставки - убавляем. понятно, что на практике все не так просто , но ты это и так знаешь. Нет у меня не было опыта с этим. Такие вещи я себе не доверяю. Скилла не хватает.
лог отличный. Нам ещё протокол связи со щитком добавлять. я уже боюсь))
Макс эксперементируй. это скетч я уже оложил. хуже не будет.
https://github.com/prenticedavid/MCUFRIEND_kbv
FreeDefaultFonts.h но там не моноширинный шрифт и таблицы - надо много вкуривать, что бы поправить.
реально не так много... формат фонта простой. Я прикручивал эти фонты к светодиодным панелям DMX
b707 для тебя не сложно а для моих почти 50 уже сложно все:) мозги уже не те.
b707 не пользовался и не знал что рисует только сам символ
В принципе ничего сложного, изменения вряд превысят 10-15 строк - там либа простая. Зато можно будет использовать любые адафрутовские фонты, а не только те, что "перерисуешь"
там проблема была не только в мигании , а втом что это всё ещё и очень долго делается, тормозя луп. Так что ещё и по быстродействию нужно сделать круче. Но думаю оно само получится
b707 для тебя не сложно а для моих почти 50 уже сложно все:) мозги уже не те.
дело не в 50 - мне столько же.
а в чем - мы уже обсуждали, повторяться не буду :)
Хотя если ты художник - то это тебя извиняет, мозги на другое закручены. я вот в жипописи не в зуб ногой и не хочу :))))
b707 не пользовался и не знал что рисует только сам символ
ну а как еще-то :) Мне кажется - чтобы вывести строку, надо вывести буквы...
ну ладно вот мой шрифт Gobold_Bold14pt7b.h
можно ли както его всунуть(заменить чтото) в FreeDefaultFonts.h ?
Все тут "не мальчики собрались" ...
b707 ковырните тогда уж отображение символа вместе с фоном ... раз был опыт
затирание пробелами, заливки фоном, и еще всякое уже пробовал в прошлом месяце. увы не помогает
там проблема была не только в мигании , а втом что это всё ещё и очень долго делается, тормозя луп. Так что ещё и по быстродействию нужно сделать круче. Но думаю оно само получится
Макс, напомни, какой контроллер у вас? Я на Атмеге нормальную скорость перерисовки TFT 320х240 получить не смог - все равно глазом успеваешь заметить, как картинка обновляется. Перешел на СТМ32
Хотя на абсолютный результат не претендую - возможно просто не смог выжать всей скорости
На видео видно как оно моргает ???
mega 2560 на прошлом экране все было четко он работал на библе UTFT. весь калабур что плетел тач, купил другой а он адафрукте работает, вот....
b707 ковырните тогда уж отображение символа вместе с фоном ... раз был опыт
хорошо, посмотрю.
На видео видно как оно моргает ???
не знаю, потом запишу посмотрим. нужно со шрифтом разгребстись
ну ладно вот мой шрифт Gobold_Bold14pt7b.h
Структура похожа.
Сначала надо понять какой из шрифтов из FreeDefaultFonts.h используется !
Для этого надо "подпортить" битовую маску симовла, который точно есть на экране, по очереди в каждом из расположенных там шрифтов.
Потом уж пробовать подменить обе таблицы для этого шрифта.
Командир:
ну да, я правильно помню - проблема в том, что у пропорциональных фонтов нет фона. Вот что написано в файле Adafruit_GFX.cpp (проблема тянется из библиотеки Adafruit_GFX, в либе MCUFIEND_KBV своих средств для вывода текста нет, она Adafruit_GFX использует) :
Пишут. что убрали фон потому что пропорциональные шрифты могут иметь всякие элементы, выступающие за границу буквы - разные "хвостики" и "шляпки" - и поэтому мол заливать фоном все пустые места неправильно. Вместо этого рекомендуют чистить место предварительно - хотя от этого текст будет мигать. Но это типа неизбежно.
Думаю, если не размещать буквы вплотную - их опасения, что стирание одной строки будет цеплять другую - напрасны. В общем, попробую добавить фон, напишу что получится. Только я в отпуск уезжаю, не знаю успею ли.
тоесть по куску выбрасывать из FreeDefaultFonts.h до тех пор пока не даст ошибку. когда будет ошибка, то значит что вытер то и использует, верно?
мк мега 2560. чип экрана не знаю какой
тоесть по куску выбрасывать из FreeDefaultFonts.h до тех пор пока не даст ошибку. когда будет ошибка, то значит что вытер то и использует, верно?
Не выбрасывать, а менять на 0xFF битовую маску и смотреть что получилось на экране с этим символом.
Пример:
меняем на
0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
и смотрим как отображается символ 'C'
Просто там вижу Small фонт и Big фонт, надо понять какой из них используется
Просто там вижу Small фонт и Big фонт, надо понять какой из них используется
что-то я помню, там от размера - ставишь setFontSize(2) - берется один фонт, а ставишь например размер 4 - другой. Но что-то не могу найти этот кусок в исходнике.
А может это и не здесь.... графических библиотек, использующих адафруит - их пара десятков как минимум
да да ща с этим разбераюсь.
а со штатным шрифтом заливка фона работает, если написать это выбрать черный цвет 0,0,0
myGLCD.setBackColor(0,0,0);
т.е. при обновлении символов они не накладыаются друг на друга а меняются без мигания
Командир, гляньте повнимательней - по-моему разница между встроенными и внешними фонтами как раз в том. что встроенные - моноширинные, а внешние - нет. Тогда то, что вы задумали - не поможет
а со штатным шрифтом заливка фона работает, если написать это выбрать черный цвет 0,0,0
ну я вроде об этом и написал на прошлой странице. Библиотека по разному работает со штатными и внешними шрифтами.... Чуть выше (1674) и подробное обьяснение от авторов либы. почему так.
тут неплохо про функции библы написано. SetFont и getFont и т.д.
Командир, гляньте повнимательней - по-моему разница между встроенными и внешними фонтами как раз в том. что встроенные - моноширинные, а внешние - нет. Тогда то, что вы задумали - не поможет
В том то и дело что и встроенные не моноширинные насколько я вижу.
Я уже голово сломал ...
и ковшик ... (поставил на газ и забыл про него)
В том то и дело что и встроенные не моноширинные насколько я вижу.
тогда возможно в этом файле вообще не те фонты. Штатные моноширинные должны быть, вроде
моноширеные...... я даже таких слов не знаю все что я понял
это в myGLCD.setFont(BigFont);
{ 142, 5, 8, 8, 0, -10 }, // 0x43 'C' это прописан размер буквы. менял цифры меняется размер но кракозяба получается
Моноширинный лежит тут - Adafruit-GFX-Library/glcdfont.c
Если выбрать шрифт FreeSmallFont или FreeBigFont, то же моргает ???
да к стати взял в FreeDefaultFonts.h закинул даные из моего шрифта , подменил, буквы не те отображаются видать мап разный, но буквы стали больше и толще, но появилось мигание:)
нет. без определиния шрифта и смол или биг выбераешь не моргает
кстати, большую часть мигания можно убрать не трогая шрифты.
viki13viki - насколько я вижу в коде, вы выводите на печать надписи все подряд, даже подписи к папаметрам. которые не меняются. Обноволяйте на экране только то. что реально изменилось - этим вы уберете большую часть миганий. да и код начнет исполнятся в несколько раз быстрее, может и остальные мигания не будут так заметны.
обманул друзья только если не определять фонт то не мигает а смол и биг тоже мигает. чудеса
Если не определяшь шрифт, то там NULL и включается отображение моноширинного родного шрифта 5х7 и библиотеки AF. Его легко можно перерисовать, но в 5х7 сильно не развернешься ...
обманул друзья только если не определять фонт то не мигает а смол и биг тоже мигает. чудеса
Ну тогда все понятно.
когда не определяешь фонт - берется тот единственный из файла Adafruit-GFX-Library/glcdfont.c. Он выводится с очисткой фона, потому и не мигает. любой другой фонт будет мигать.
Если не определяшь шрифт, то там NULL и включается отображение моноширинного родного шрифта 5х7 и библиотеки AF. Его легко можно перерисовать, но в 5х7 сильно не развернешься ...
надо убрать вывод всех статичных строк из ЛУПа. Одно это рещит 80% проблемы. А для параметров сделать условный вывод - только при изменении
вот тебе и замена экрана, думал просто сниму другой поставлю и поеду, а нет.... вынос мозга получился.
b707 если я ща полезу в скетчь чета менять , у меня вообще и секетч завалю и глаза мои начнут мигать вместе с экраном..
В Adafruit_GFX.cpp
после строк 1158-1165 с текстом:
Вставляем:
Насчет BLACK не очень уверен - вообщем тут надо цвет фона указать.
Хотя это не поможет, так как это полное рисование, но я не вижу где происходит стирание ...
b707 если я ща полезу в скетчь чета менять , у меня вообще и секетч завалю и глаза мои начнут мигать вместе с экраном..
да ладно, там всего-то строк 300 с экраном связано. можно поравить часа за два :)
1116 есть
надо убрать вывод всех статичных строк из ЛУПа. Одно это рещит 80% проблемы. А для параметров сделать условный вывод - только при изменении
да не , там страница один раз загружается только: в сетапе и когда тачем на кнопку выбора страницы нажимаешь. А сами параметры да, обновляются в соответствии с поступлением данных с PCM
BLACK наверное можно/нужно заменить на bg
Но я там хоть убей не вижу стирания !!!