Arduino TFT дисплей 1,8 отображение цветов

nikolasha225
Offline
Зарегистрирован: 14.01.2022

Здраствуйте. Недавно я купил у китайцев вот такой дисплей(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...)дисплей

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019
nikolasha225
Offline
Зарегистрирован: 14.01.2022

И как это поможет решить проблему с цветами? И в tft, и в utft  чвета некорректные. Мне нужно выводить изображение конкретно с sd.(и я уже использовал image converter565)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nikolasha225, если у Вас не те цвета, то весьма вероятно, что Вы неправильно инициализируете дисплей. По приведенной Вами ссылке у дисплея должен быть контроллер ST7735S, Вы проверяли, что это так? Мне, например, китайцы очень часто высылали дисплеи с совсем не тем контроллером, что указано на сайте.

Ну и второе: когда Вы достоверно выясните тип дисплейного контроллера, не лишним будет убедиться, что библиотека знает о таком контроллере, поддерживает работу с ним, а также в том, что она правильно его определяет и подключает нужные модули.

nikolasha225
Offline
Зарегистрирован: 14.01.2022

Дело в том что и TFT и UTFT в фигурах выводят правильные цвета, а в изображениях с sd кривые

nikolasha225
Offline
Зарегистрирован: 14.01.2022

andriano пишет:

nikolasha225, если у Вас не те цвета, то весьма вероятно, что Вы неправильно инициализируете дисплей. По приведенной Вами ссылке у дисплея должен быть контроллер ST7735S, Вы проверяли, что это так? Мне, например, китайцы очень часто высылали дисплеи с совсем не тем контроллером, что указано на сайте.

Ну и второе: когда Вы достоверно выясните тип дисплейного контроллера, не лишним будет убедиться, что библиотека знает о таком контроллере, поддерживает работу с ним, а также в том, что она правильно его определяет и подключает нужные модули.


А как проверит его не сломав дисплей?

nikolasha225
Offline
Зарегистрирован: 14.01.2022

nikolasha225 пишет:
andriano пишет:

nikolasha225, если у Вас не те цвета, то весьма вероятно, что Вы неправильно инициализируете дисплей. По приведенной Вами ссылке у дисплея должен быть контроллер ST7735S, Вы проверяли, что это так? Мне, например, китайцы очень часто высылали дисплеи с совсем не тем контроллером, что указано на сайте.

Ну и второе: когда Вы достоверно выясните тип дисплейного контроллера, не лишним будет убедиться, что библиотека знает о таком контроллере, поддерживает работу с ним, а также в том, что она правильно его определяет и подключает нужные модули.


А как проверит его не сломав дисплей?

Просто в моей китайской вариации на задней стороне только 1 транзистор и несколько резисторов с кондеёрами.

b707
Offline
Зарегистрирован: 26.05.2017

nikolasha225 пишет:
Дело в том что и TFT и UTFT в фигурах выводят правильные цвета, а в изображениях с sd кривые

тогда скорее всего дело в коде чтения картинок с sd-карты

nikolasha225
Offline
Зарегистрирован: 14.01.2022

Если кто разбирается как картинку из rgb в grb или другие переделать скажите может получится? И вроде в imageconverter565 в настройках можно это поменять но я не шарю. Если кто знает пишите.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nikolasha225 пишет:
Дело в том что и TFT и UTFT в фигурах выводят правильные цвета, а в изображениях с sd кривые

Если все обстоит в точности так, как Вы пишете (в чем тоже есть некоторые сомнения), значит, Вы неправильно перекодируете картинки для отображения на экране.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nikolasha225 пишет:
А как проверит его не сломав дисплей?

Небольшое замечание: я всегда сам пишу код для дисплея. Соответственно, общеупотребительными библиотеками не пользуюсь. Ну и поэтому знаю об их свойствах только в общих чертах.

Первое - существуют диагностические утилиты, которые прямо в монитор порта выводят тип дисплея. Большинство дисплеев поддерживают такую возможность (т.е. сообщают библиотекам свое "имя"). Поиск таких утилит целесообразно начать среди стандартных примеров к библиотеке.

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

nikolasha225
Offline
Зарегистрирован: 14.01.2022

andriano пишет:

nikolasha225 пишет:
Дело в том что и TFT и UTFT в фигурах выводят правильные цвета, а в изображениях с sd кривые

Если все обстоит в точности так, как Вы пишете (в чем тоже есть некоторые сомнения), значит, Вы неправильно перекодируете картинки для отображения на экране.

что выводитчто вывожу

Сомнения наверное были не зря. Он r и b  меняет местами и возможно я это не заметил при выводе фигур т.к. на порядок не особо внимания не обращал. 

Проблема понятна теперь можно попробовать либо взять утилиту для переделывания из rgb в bgr, либо в библиотеке переделать заливку с rgb в bgr. 

nikolasha225
Offline
Зарегистрирован: 14.01.2022

Я нашёл как в фотошопе поменять местами каналы!

Надо в панельке окно выбрать отображать панель каналов(если выключена), далее в панельке выбираем r канал и дублируем его. После выбираем синий канал выбираем всё и копируем(изображение), далее выбираем красный канал выделяем всё и вставляем. Ну а затем копируем дубликат красного и вставляем в синий, а дубликат красного удаляем и вот у нас нужное изображение.

b707
Offline
Зарегистрирован: 26.05.2017

ну можно и так....

хотя наверно проще было бы в библиотеке пару строк местами поменять. чем все картинки через фотошоп править

nikolasha225
Offline
Зарегистрирован: 14.01.2022

b707 пишет:

ну можно и так....

хотя наверно проще было бы в библиотеке пару строк местами поменять. чем все картинки через фотошоп править


Я тоже так подумал но не смог т.к. не поня вообше где цвет заливается(но сам файл с функцией я нашёл). Если кто рабирается подскажите.

b707
Offline
Зарегистрирован: 26.05.2017

nikolasha225 пишет:
[не поня вообше где цвет заливается(но сам файл с функцией я нашёл). Если кто рабирается подскажите.

посмотрел описание к imageconverter - в нем такой опции нет.

вы говорите. что нашли "файл с функцией"? - говорите какой, посмотрю

nikolasha225
Offline
Зарегистрирован: 14.01.2022

b707 пишет:

nikolasha225 пишет:
[не поня вообше где цвет заливается(но сам файл с функцией я нашёл). Если кто рабирается подскажите.

посмотрел описание к imageconverter - в нем такой опции нет.

вы говорите. что нашли "файл с функцией"? - говорите какой, посмотрю


Файл с функцией библиотеки TFT(т. к. Сам дисплей чвета криво выводит и название скоро напишу). Но раз уж сказали про конвертер то там в настройках есть порядок заливки цвета лил как то так(тоже скоро напишу).

nikolasha225
Offline
Зарегистрирован: 14.01.2022

в конвертере заходим Новое изображение>нажимаем ок(неважно какое)>вкладка настройки>Преобразование...>Тип: Ставим цветное> вкладка матрица и там цветовые настройки. Сейчас скажу что за файл с TFT.

nikolasha225
Offline
Зарегистрирован: 14.01.2022

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) {)

nikolasha225
Offline
Зарегистрирован: 14.01.2022

ещё в файле Adafruit_ST7735.h на 87 строке (в конце дефайнов) есть цвета ко тоже не понятно с ними. и на 105-118 строчке тоже с цветами что-то. цветами 

b707
Offline
Зарегистрирован: 26.05.2017

это все не то

kalapanga
Offline
Зарегистрирован: 23.10.2016

nikolasha225, на всякий случай хочу Вам напомнить, что библиотек UTFT (наверное правильнее сказать, её форков) существует хренова туча. Только на гитхабе 124 репозитория. Так что, чтобы сказать Вам, что и где там поменять, нужно хотя бы знать, о какой библиотеке речь. В исходной, насколько я помню, никакого чтения из файлов не было. Т.е. это кто-то сделал под себя, использовал удобный ему порядок байт. Адафрутовских библиотек для своей работы исходная UTFT тоже вроде не использовала.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Еще, как вариант, можно посмотреть дэйташит на контроллер и перенастроить его под желаемый порядок цветов.

nikolasha225
Offline
Зарегистрирован: 14.01.2022

kalapanga пишет:

nikolasha225, на всякий случай хочу Вам напомнить, что библиотек UTFT (наверное правильнее сказать, её форков) существует хренова туча. Только на гитхабе 124 репозитория. Так что, чтобы сказать Вам, что и где там поменять, нужно хотя бы знать, о какой библиотеке речь. В исходной, насколько я помню, никакого чтения из файлов не было. Т.е. это кто-то сделал под себя, использовал удобный ему порядок байт. Адафрутовских библиотек для своей работы исходная UTFT тоже вроде не использовала.


Во-первых я использую встроенную TFT библиотеку(https://drive.google.com/file/d/1JTR6r1dxXFcW5GNHYJBZslDIfGSt7F7b/view?u... вот скетч). Во-вторых она находится в папке libraries но не в документах, а в папке с приложением. В-третьих я не юзаю UTFT т.к. я не смог выводить изображеня без ошибки( да и зачем юзать другую если есть стандартная).

nikolasha225
Offline
Зарегистрирован: 14.01.2022

Да и рыться по гитхабу мне не охота.

nikolasha225
Offline
Зарегистрирован: 14.01.2022

Но если знаете скажите

b707
Offline
Зарегистрирован: 26.05.2017

nikolasha225 пишет:
Да и рыться по гитхабу мне не охота.

еще один.... Откуда вы берете этот миф про "стандартные библиотеки"?

В ардуино нет никаких "стандартных библиотек", 99% либ написаны не фирмой, а пользователями , такими же как ты или я. Не так важно, кто писал библиотеку, важно лишь, есть в ней критичные ошибки или нет.

Абсолютно все библиотеки лежат на гитхабе (в том числе и "стандартные") и самый простой способ найти нужную либу - это поискать там. Так что если вас спрашивают, какую библиотеку вы используете - надо отвечать ссылкой на место, где вы ее скачивали. Давать ссылки на свой гуглдрайв - это глупость, туда никто смотреть не станет.

nikolasha225
Offline
Зарегистрирован: 14.01.2022

Эта библиотека установилась всместе с ардуино и примеры посмотреть можно в Файл>Примеры>ВЫБЫТ>TFT, но если уж на то пошло то вот https://github.com/arduino-libraries/TFT и стандартная она потому что показывается на официальном сайте arduino.cc(https://www.arduino.cc/en/Reference/TFTLibrary).

kalapanga
Offline
Зарегистрирован: 23.10.2016

Сейчас с ИДЕ действительно идёт библиотека TFT (а я и не знал!). Это какая-то разновидность библиотеки от адафрутов + использующая библиотеку SD. В моём сообщении я всего лишь имел ввиду, что не плохо бы, говоря о библиотеке, указать сразу и точно - что обсуждаем. И никого не заставлял где-то рыться. Автор наконец-то сделал это в сообщении #27. До этого упоминались и TFT, и UTFT. Конвертер тоже от UTFT. Пойми тут! 

Библиотека TFT использует при отображении файла порядок байт BGR, вроде как обычный для 24 битных бмп. 

nikolasha225
Offline
Зарегистрирован: 14.01.2022

kalapanga пишет:

Сейчас с ИДЕ действительно идёт библиотека TFT (а я и не знал!). Это какая-то разновидность библиотеки от адафрутов + использующая библиотеку SD. В моём сообщении я всего лишь имел ввиду, что не плохо бы, говоря о библиотеке, указать сразу и точно - что обсуждаем. И никого не заставлял где-то рыться. Автор наконец-то сделал это в сообщении #27. До этого упоминались и TFT, и UTFT. Конвертер тоже от UTFT. Пойми тут! 

Библиотека TFT использует при отображении файла порядок байт BGR, вроде как обычный для 24 битных бмп. 


Насчёт bgr у 24битной bmp я очень не уверен потому что а)на дисплей кроме 24бит не выводятся другие форматы(вообще он даже не пытается выводить) б) 24бита изкажены, тоесть им тоже надо менять каналы.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nikolasha225][quote=kalapanga пишет:

Насчёт bgr у 24битной bmp я очень не уверен потому что а)на дисплей кроме 24бит не выводятся другие форматы(вообще он даже не пытается выводить) б) 24бита изкажены, тоесть им тоже надо менять каналы.

Если Вы в чем-то не уверены, нужно читать стандарты, а не ссылаться на то, как работает какая-то частная библиотека, о которой 99.9% программистов слыхом не слыхивало.