Arduino TFT дисплей 1,8 отображение цветов
- Войдите на сайт для отправки комментариев
Здраствуйте. Недавно я купил у китайцев вот такой дисплей(https://iarduino.ru/shop/Displei/cvetnoy-graficheskiy-tft-ekran-128-10--... ссылка не от продавца) с разъёмом под сд. Поначалу я его запустил и всё вроде работало и цвета норм, но когда я решил выводить файлы с сд начались проблемы. 1) я сначала пробовал библиотеку UTFT и она raw(из примеров) не выводила(только шум) и bmp(16 или 32 бит)выводила криво по цветам(а 24 только шум), но это не главное в правой части дисплея(в конце) она выводила кусок картинки затемнённый и вырваный из начала. После я нашёл как выводить через библиотеку TFT и всё хорошо но цвета выводятся криво и принимает только bmp(24bit), а когда я выводил инверсию она выводила примерно похожие цвета, но чёрный и белый были инверсные. как сделать нормальное отображение цветов?(загружал из примера библиотеки TFT и контролила всё уно и сд взял отдельно т.к. встроеный кривой и ножки не косаются контактов)
(вот ссылка на бмп т.к. здесь нельзя загружать такой формат: https://drive.google.com/file/d/1Em1iDaHHKHgjxMO8GgAn-QDn_b0XxFrY/view?u...)
http://wiki.amperka.ru/products:tft-lcd-480x320
И как это поможет решить проблему с цветами? И в tft, и в utft чвета некорректные. Мне нужно выводить изображение конкретно с sd.(и я уже использовал image converter565)
nikolasha225, если у Вас не те цвета, то весьма вероятно, что Вы неправильно инициализируете дисплей. По приведенной Вами ссылке у дисплея должен быть контроллер ST7735S, Вы проверяли, что это так? Мне, например, китайцы очень часто высылали дисплеи с совсем не тем контроллером, что указано на сайте.
Ну и второе: когда Вы достоверно выясните тип дисплейного контроллера, не лишним будет убедиться, что библиотека знает о таком контроллере, поддерживает работу с ним, а также в том, что она правильно его определяет и подключает нужные модули.
Дело в том что и TFT и UTFT в фигурах выводят правильные цвета, а в изображениях с sd кривые
nikolasha225, если у Вас не те цвета, то весьма вероятно, что Вы неправильно инициализируете дисплей. По приведенной Вами ссылке у дисплея должен быть контроллер ST7735S, Вы проверяли, что это так? Мне, например, китайцы очень часто высылали дисплеи с совсем не тем контроллером, что указано на сайте.
Ну и второе: когда Вы достоверно выясните тип дисплейного контроллера, не лишним будет убедиться, что библиотека знает о таком контроллере, поддерживает работу с ним, а также в том, что она правильно его определяет и подключает нужные модули.
А как проверит его не сломав дисплей?
nikolasha225, если у Вас не те цвета, то весьма вероятно, что Вы неправильно инициализируете дисплей. По приведенной Вами ссылке у дисплея должен быть контроллер ST7735S, Вы проверяли, что это так? Мне, например, китайцы очень часто высылали дисплеи с совсем не тем контроллером, что указано на сайте.
Ну и второе: когда Вы достоверно выясните тип дисплейного контроллера, не лишним будет убедиться, что библиотека знает о таком контроллере, поддерживает работу с ним, а также в том, что она правильно его определяет и подключает нужные модули.
А как проверит его не сломав дисплей?
Просто в моей китайской вариации на задней стороне только 1 транзистор и несколько резисторов с кондеёрами.
тогда скорее всего дело в коде чтения картинок с sd-карты
Если кто разбирается как картинку из rgb в grb или другие переделать скажите может получится? И вроде в imageconverter565 в настройках можно это поменять но я не шарю. Если кто знает пишите.
Если все обстоит в точности так, как Вы пишете (в чем тоже есть некоторые сомнения), значит, Вы неправильно перекодируете картинки для отображения на экране.
Небольшое замечание: я всегда сам пишу код для дисплея. Соответственно, общеупотребительными библиотеками не пользуюсь. Ну и поэтому знаю об их свойствах только в общих чертах.
Первое - существуют диагностические утилиты, которые прямо в монитор порта выводят тип дисплея. Большинство дисплеев поддерживают такую возможность (т.е. сообщают библиотекам свое "имя"). Поиск таких утилит целесообразно начать среди стандартных примеров к библиотеке.
Но, судя по тому, что Вы написали выше, дело, скорее, в неправильной перекодировке цвета. В этом случае лучше начать с того, чтобы установить как кодируется цвет именно в том режиме, который Вы используете и, исходя уже из этого, перекодировать нужную картинку. Естественно, нужно будет почитать, как кодируется цвет в используемом Вами формате файла.
Если все обстоит в точности так, как Вы пишете (в чем тоже есть некоторые сомнения), значит, Вы неправильно перекодируете картинки для отображения на экране.
Сомнения наверное были не зря. Он r и b меняет местами и возможно я это не заметил при выводе фигур т.к. на порядок не особо внимания не обращал.
Проблема понятна теперь можно попробовать либо взять утилиту для переделывания из rgb в bgr, либо в библиотеке переделать заливку с rgb в bgr.
Я нашёл как в фотошопе поменять местами каналы!
Надо в панельке окно выбрать отображать панель каналов(если выключена), далее в панельке выбираем r канал и дублируем его. После выбираем синий канал выбираем всё и копируем(изображение), далее выбираем красный канал выделяем всё и вставляем. Ну а затем копируем дубликат красного и вставляем в синий, а дубликат красного удаляем и вот у нас нужное изображение.
ну можно и так....
хотя наверно проще было бы в библиотеке пару строк местами поменять. чем все картинки через фотошоп править
ну можно и так....
хотя наверно проще было бы в библиотеке пару строк местами поменять. чем все картинки через фотошоп править
Я тоже так подумал но не смог т.к. не поня вообше где цвет заливается(но сам файл с функцией я нашёл). Если кто рабирается подскажите.
посмотрел описание к imageconverter - в нем такой опции нет.
вы говорите. что нашли "файл с функцией"? - говорите какой, посмотрю
посмотрел описание к imageconverter - в нем такой опции нет.
вы говорите. что нашли "файл с функцией"? - говорите какой, посмотрю
Файл с функцией библиотеки TFT(т. к. Сам дисплей чвета криво выводит и название скоро напишу). Но раз уж сказали про конвертер то там в настройках есть порядок заливки цвета лил как то так(тоже скоро напишу).
в конвертере заходим Новое изображение>нажимаем ок(неважно какое)>вкладка настройки>Преобразование...>Тип: Ставим цветное> вкладка матрица и там цветовые настройки. Сейчас скажу что за файл с TFT.
logo = TFTscreen.loadImage("1.bmp"); - этой функцией скачиваем файл с картинкой с сд.
TFTscreen.image(logo, x, y); - этой выводим.
В файле Adafruit_GFX.cpp в конце что-то с цветами связанное.(void Adafruit_GFX::image(PImage & img, uint16_t x, uint16_t y) {)
ещё в файле Adafruit_ST7735.h на 87 строке (в конце дефайнов) есть цвета ко тоже не понятно с ними. и на 105-118 строчке тоже с цветами что-то. цветами
это все не то
nikolasha225, на всякий случай хочу Вам напомнить, что библиотек UTFT (наверное правильнее сказать, её форков) существует хренова туча. Только на гитхабе 124 репозитория. Так что, чтобы сказать Вам, что и где там поменять, нужно хотя бы знать, о какой библиотеке речь. В исходной, насколько я помню, никакого чтения из файлов не было. Т.е. это кто-то сделал под себя, использовал удобный ему порядок байт. Адафрутовских библиотек для своей работы исходная UTFT тоже вроде не использовала.
Еще, как вариант, можно посмотреть дэйташит на контроллер и перенастроить его под желаемый порядок цветов.
nikolasha225, на всякий случай хочу Вам напомнить, что библиотек UTFT (наверное правильнее сказать, её форков) существует хренова туча. Только на гитхабе 124 репозитория. Так что, чтобы сказать Вам, что и где там поменять, нужно хотя бы знать, о какой библиотеке речь. В исходной, насколько я помню, никакого чтения из файлов не было. Т.е. это кто-то сделал под себя, использовал удобный ему порядок байт. Адафрутовских библиотек для своей работы исходная UTFT тоже вроде не использовала.
Во-первых я использую встроенную TFT библиотеку(https://drive.google.com/file/d/1JTR6r1dxXFcW5GNHYJBZslDIfGSt7F7b/view?u... вот скетч). Во-вторых она находится в папке libraries но не в документах, а в папке с приложением. В-третьих я не юзаю UTFT т.к. я не смог выводить изображеня без ошибки( да и зачем юзать другую если есть стандартная).
Да и рыться по гитхабу мне не охота.
Но если знаете скажите
еще один.... Откуда вы берете этот миф про "стандартные библиотеки"?
В ардуино нет никаких "стандартных библиотек", 99% либ написаны не фирмой, а пользователями , такими же как ты или я. Не так важно, кто писал библиотеку, важно лишь, есть в ней критичные ошибки или нет.
Абсолютно все библиотеки лежат на гитхабе (в том числе и "стандартные") и самый простой способ найти нужную либу - это поискать там. Так что если вас спрашивают, какую библиотеку вы используете - надо отвечать ссылкой на место, где вы ее скачивали. Давать ссылки на свой гуглдрайв - это глупость, туда никто смотреть не станет.
Эта библиотека установилась всместе с ардуино и примеры посмотреть можно в Файл>Примеры>ВЫБЫТ>TFT, но если уж на то пошло то вот https://github.com/arduino-libraries/TFT и стандартная она потому что показывается на официальном сайте arduino.cc(https://www.arduino.cc/en/Reference/TFTLibrary).
Сейчас с ИДЕ действительно идёт библиотека TFT (а я и не знал!). Это какая-то разновидность библиотеки от адафрутов + использующая библиотеку SD. В моём сообщении я всего лишь имел ввиду, что не плохо бы, говоря о библиотеке, указать сразу и точно - что обсуждаем. И никого не заставлял где-то рыться. Автор наконец-то сделал это в сообщении #27. До этого упоминались и TFT, и UTFT. Конвертер тоже от UTFT. Пойми тут!
Библиотека TFT использует при отображении файла порядок байт BGR, вроде как обычный для 24 битных бмп.
Сейчас с ИДЕ действительно идёт библиотека TFT (а я и не знал!). Это какая-то разновидность библиотеки от адафрутов + использующая библиотеку SD. В моём сообщении я всего лишь имел ввиду, что не плохо бы, говоря о библиотеке, указать сразу и точно - что обсуждаем. И никого не заставлял где-то рыться. Автор наконец-то сделал это в сообщении #27. До этого упоминались и TFT, и UTFT. Конвертер тоже от UTFT. Пойми тут!
Библиотека TFT использует при отображении файла порядок байт BGR, вроде как обычный для 24 битных бмп.
Насчёт bgr у 24битной bmp я очень не уверен потому что а)на дисплей кроме 24бит не выводятся другие форматы(вообще он даже не пытается выводить) б) 24бита изкажены, тоесть им тоже надо менять каналы.
Насчёт bgr у 24битной bmp я очень не уверен потому что а)на дисплей кроме 24бит не выводятся другие форматы(вообще он даже не пытается выводить) б) 24бита изкажены, тоесть им тоже надо менять каналы.
Если Вы в чем-то не уверены, нужно читать стандарты, а не ссылаться на то, как работает какая-то частная библиотека, о которой 99.9% программистов слыхом не слыхивало.