Обновление дисплея ILI9341
- Войдите на сайт для отправки комментариев
Сб, 23/04/2016 - 13:11
Поставил библиотеку Adafruit_ILI9341, так как она единственная стабильно работала в тесте, но вот какая проблема оказалась. При выводе показаний на дисплей цифры накладываются друг на друга, а команды стирания дисплея в библиотеке нет. Как быть?
Если использовать функцию заливки, то экран заливается около 2х секунд.
1. В нормальной библиотеке должна быть настройка, как выводить символы - с прозрачным или непрозрачным фоном.
2. Если покаким-либо причинам такого в библиотеке обнаружить не удалось - не нужно чистить весь дисплей - достаточно только место под выводимые символы (лучше вообще по одному).
PS. По поводу заливки - как она выглядит, если заливать из центральной точки?
команды стирания дисплея в библиотеке нет.
Как нет? А куда Вы её дели?
Зальёт прямоугольный регион за милую душу. Только заливайте не весь экран, а только место под Вашу букву. И все дела.
Если мы, конечноЮ об одной и той же библиотеке говорим.
Спасибо. Про настройку я вообще не слышал. Дело в том, что на экране 32 изменяющихся параметра. Как то не очень удобно под каждый рисовать заливной квадратик.
Заливку из центральной точки не пробовал. До этого работал только с олед дисплеями. Там ничего заливать ненужно
Если нет режима рисования символов с непрнозоачным фоном - это единственное правильное решение. В противном случае экран будет сильно мерцать.
Хмм...А как же по нему на ютубе видео крутят?
У меня честно говоря не очень большой опыт работы с экранами. То есть я так понимаю надо нарисовать красный квадрат на числе (чтобы его было видно на черном фоне), когда закрою число поменять цвет на черный и вставить весь этот код в начало программы?
Вот интересно, а памяти то хватит? Почему другие экраны обновляются сбросом и решит ли проблему смена библиотеки на UTFT или подобную?
Товарищи, ну помогите же побороть дисплей :)
Стирать надписи частично удалось поставив тексту фон, но. Когда значение 100% все хорошо, но если оно становится двухзначным, то знак процента естественно сдвигается, но и на предыдущем месте он остается. Вот фрагмент кода
И еще программа сильно тормозит, хотя памяти занято всего 30%
Про скорость. Так обсасывалось сто раз, например недавно http://arduino.ru/forum/obshchii/skorost-raboty-displeev
Спасибо. В моем случае тормозит не сам дисплей, а программа...
Добрый день, уважаемое сообщество. Прошу разъяснить,про опрос датчиков и вывод значений на TFT дисплей на чипе ILI9341(китайский). Правильно ли я понимаю, что в из-за отсутствия буфера памяти у этого дисплея, в момент опроса датчиков, Arduino "забывает" о том что есть такое устройство, как дисплей, и из-за этого дисплей заливает белым? Или же используемые библиотеки не позволяют выполнить одновременный опрос барометра и часов реального времени без обновления экрана. Изначально идея была о выводе текущего времени(real time DS3231) и раз в 5 минут опросе барометра с дальнейшим построением барограммы.
Код скетча ниже:
>> правильно ли я понимаю....
неправильно. дисплей у вас заливается белым, потому что вы делаете его переинициализацию при каждом обновлении часов на экране, а это неверно. Оператор tft.begin() нужно вызывать один раз при старте скетча, а не каждую секунду....
Если я перестаю инициализировать экран tft.begin(0x9341); в функции printTime(); тогда экран просто заливает белым при старте ардуины.
https://youtu.be/e32CtbUq5io
на 34 секунде произошла загрузка скетча, и экран побелел.
Если я перестаю инициализировать экран tft.begin(0x9341); в функции printTime(); тогда экран просто заливает белым при старте ардуины.
https://youtu.be/e32CtbUq5io
на 34 секунде произошла загрузка скетча, и экран побелел.
Ещё раз: вызов tft.begin(0x9341); должен быть вставлен в setup, а с остальных мест - убран. Так же как и Wire.begin.
Ничего не поменялось...экран белый сразу после загрузки скетча. нет даже намека на отрисовку или вывод текста. В других функциях везде убрал обращение к шине и дисплею
Wire.begin и tft.begin - в самое начало setup. Неплохо было бы и SD.begin до первого вызова SD.open сделать, не находите?
Изменил setup, теперь примерно на 1 секунду появляется отзеркаленное справо-на-лево изображение. и опять заливается белым. https://youtu.be/nnRdgX99SpQ
Что-то у меня в подсознании воспоминания постов, где люди писали про белые экраны. И в этом было, по-моему, замешано то ли напряжение питания, то ли несогласованность уровней интерфейса.
Хотя, зеркальное изображение может еще намекать и на проблему с драйвером - мошт не тот? Поменяйте библиотеку. В u8g мошт есть саппорт этого чипа?
Что-то у меня в подсознании воспоминания постов, где люди писали про белые экраны.
та не... у ТС все работало с этой библиотекой, пока он на форум не пришел.
Богдан, разбирайтесь с кодом, ищите другие ошибки. Они наверняка есть, судя по первому коду программист из вас еще тот...
Библиотеки кроме adafruit'овской ни одна не подошли "as is"
Как правильно заметил b707, я ни разу не программист, скорее сочувствующий =)
Но чтобы найти ошибки в коде, нужно знать где искать...пока гуглю по форуму на предмет "белых экранов"
Кстати,если заливать тестовый скетч "graphictest", это где всякие геометрические фигуры рисуются, там fillScreen(BLACK); коректно отрабатывает, медленно, но верно. Но стоит добавить в тот скетч любое обращение к внешним датчикам, как скетч начинает работать абсолютно также как и мой самописный, т.е. с белым экраном
А, ну, я понял. Посмотрите на LCD_RESET и пины, которые используются для I2C (датчики и часы).
а ардуина какая?
А, ну я понял. Посмотрите на LCD_RESET и пины, которые используются для I2C (датчики и часы).
а, ну точно :) Поэтому ему и пришлось Wire.begin() всюду натыкать - потому что обращение к датчикам портило экран, а обращение к экрану - вырубало датчики :)
Arduino UNO, BMP180 и DS3231 сидят на ногах A4/A5 ардуины, LCD_RESET дисплея сидит тоже на А4. Ради интереса перерезал Reset на дисплей, но он не заводится, пришлось греть паяльник =)
Не стоит пин Reset дисплея заводить на пины, на которых работают I2C. Перенесите на другой пин, свободный. И в прошивке переназначьте.
Как правильно заметил b707, я ни разу не программист, скорее сочувствующий =)
если так, то нафига сразу лезть в датчики и прочее.
запустите один дисплей, поиграйтесь с примерами.
а потом уже добавляйте датчики-кнопочки.
ни разу не программист
если так, то нафига сразу лезть в датчики и прочее. запустите один дисплей, поиграйтесь с примерами.
Вы всё перепутали. Так поступают как раз программисты. Вот сейчас я ковыряюсь с e-paper именно так - кроме дисплея ничего, практикуюсь рисовать на нём что мне нужно, а когда рисование будет готово, начну добавлять другие приблуды. А "ни разу не программисты" - те всегда валят в одну кучу всё и сразу, а потом идут на форум за "помощью". Это общая практика.
ни разу не программист
если так, то нафига сразу лезть в датчики и прочее. запустите один дисплей, поиграйтесь с примерами.
Вы всё перепутали. Так поступают как раз программисты. Вот сейчас я ковыряюсь с e-paper именно так - кроме дисплея ничего, практикуюсь рисовать на нём что мне нужно, а когда рисование будет готово, начну добавлять другие приблуды. А "ни разу не программисты" - те всегда валят в одну кучу всё и сразу, а потом идут на форум за "помощью". Это общая практика.
пардон, звиняйте)))))