TFT LCD для Ардуино

hugoboss317
Offline
Зарегистрирован: 21.03.2013

andriano пишет:

Ну то есть dataFile.read(), оказывается, возвращает не 8-, а 16-разрядное число.

Ну вроде как и да и нет. (всмысле я и вроде как согласен и нет)

Из буфера то читает по 8 бит, хотя 16-ти разрядное как раз в две ячейки и уложиться.

Короче ХЗ.

andriano пишет:

какова вообще используемая глубина цвета?

Для экрана 5 - 6 - 5 т.е. 16 бит. 

RAW (по всей видимости) так и сформирован.

А с картинкой - это на фото плохо видно. Мне больше интересно почему чёрный (0xFFFF) не искажает а остальные "плывут".

Интересно на сам RAW посмотреть, но открыть его ничем не могу. 

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

hugoboss317 пишет:

Ну вроде как и да и нет. (всмысле я и вроде как согласен и нет)

Из буфера то читает по 8 бит, хотя 16-ти разрядное как раз в две ячейки и уложиться.

Короче ХЗ.

Т.е. Вы используете библиотеку и даже не заглянули в ее исходники?

Какое может быть ХЗ при наличии исходников библиотеки!

Цитата:

Для экрана 5 - 6 - 5 т.е. 16 бит. 

RAW (по всей видимости) так и сформирован.

Я, в общем-то, тоже посчитал, что это само собой разумеется, но исходя из двух фактов:

- приведенный у Вас фрагмент кода написан так, как будто предполагает, что длина строки в RAW не равна удвоенной длине в пикселях. 

- фрагмент, переписанный, исхоодя из того, что на пиксель приходится 2 байта, работает некорректно.

я несколько в этом засомневался.

Цитата:

А с картинкой - это на фото плохо видно. Мне больше интересно почему чёрный (0xFFFF) не искажает а остальные "плывут".

Интересно на сам RAW посмотреть, но открыть его ничем не могу. 

Это как? У Вас нет компьютера?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

andriano пишет:

Это как? У Вас нет компьютера?

)) Анекдот вспомнил. Ковычки добавил чтоб понятней было.

- Привет. Как дела?

-  "+"

- Ты на пары идёшь?

- "-"

- Бл_дь, ты что, с калькулятора пишешь?

 :)))))))))

Я многого просто не пишу. Некоторые вещи вроде как само собой разумеющиеся, но не во всём можно быть уверенном на 100%.  В одном из минипроэктов есть переменная, меняться значение которой может только i++, или i--, т.е. не больше чем на еденицу. А по факту - уменьшается до (кажется ) 435 и опять 465 и наоборот. Весть исходник поиском перекопал, ну нет больше с этой переменной никаких операций. Это всё в версии 1.0.5.

А если загрузить в версии 1.6.х. Как в исходнике так и работает, но не все библиотеки загружаются. Так в EEPROM записываю нужное мне значение с версией 1.6.х, а потом перезагружаю с версии 1.0.5. Чё как вобще не понятно, но работает и только так. Я к чему - i++ Это i = i+1, уверены на 100%? А я нет. ИМХО

Из представленного мной фрагмента кода (вроде как) явно видно что на пиксель приходится (ну или как правильней) 2 байта в файле RAW и именно по этому буфер, изначальный гемор, в два раза больше ширены картинки по размеру. Это тоже само собо разумеется. 

Естесссно я копался в исходниках и поэтому и утверждаю, что функция чтения в буфер и чтения байта, немного (мягко говоря) отличаются.

Да и собственно почему у меня особого интереса нет от буфера избавляться - время. Время вывода увеличивается больше чем в 6 раз. Не думаю что это понравится кому то. Гораздо быстрей выводить из двух частей если сильно широкое изображение. Я оптимизировал до вывода из трёх полной ширины экрана. Этоже и рекомендую.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Тут ещё попутно интересный момент появился. Хотел перенести проект на Mega2560, но оказалось что на этом контроллере вывод всего( и из flash, и из SD) по времени примерно вдвое дольше чем на UNO. На аппаратном SPI SD карта там она и осталась. Другой разници не нашёл. Парни, подскажите если знаете, почему так?

slider
Offline
Зарегистрирован: 17.06.2014

hugoboss317 пишет:

Тут ещё попутно интересный момент появился. Хотел перенести проект на Mega2560, но оказалось что на этом контроллере вывод всего( и из flash, и из SD) по времени примерно вдвое дольше чем на UNO. На аппаратном SPI SD карта там она и осталась. Другой разници не нашёл. Парни, подскажите если знаете, почему так?

к каким пинам подключаете шину данных диспа на UNO и на Меге ?
Какую либу используете ?
Какой дисплей?

поищите в инете pinouts arduino uno ,  mega   и сравните их , на какие порты пины приходят. 

Самое быстрое на Уно это цельный порт PortD  D0-D7 (UTFT) . Если D2-7 , D8 D9 (Adafruit) то тратися время на распихивание по 2-м разным портам !
  Для меги самое быстрое это цельный порт PortA PortC .          Если D2-7 , D8 D9  то это раскидывание по 3-м разным портам !!!.  Быстрый вариант это дисп на 16бит PortA+PortC .  

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

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Ну примерно так и думал. Дисплей на 8 бит. Библиотека Adafruit.  На UNO подключен D2-D7 + B0,B1. (А D8 D9  это где?)

На Mega на 3 порта раскинуто,но заметно очень.

Перебросить только на В порт не получмтся. Во первых там аппаратный SPI, как я говорил, на SD.

А вот на меге я бы и перекинул на порт C. НЕ могу найти в каком файле конфиг.

Вся инициализация в MCUFRIEND.  

Rustem Mukhamedyarov
Offline
Зарегистрирован: 10.02.2019

проблема та же только экран 2.4 при определении ридером на экране появляются помехи, красным не становиться.

ЕДИНОМЫШЛЕННИКИ дайте заключение: выкинуть или у меня руки кривые
 
 
ПРочитано LCD_ID_Reader найден на просторах
 
Initializing LCD...
Reading ID...0x0000
Loading LCD registers...
Filling the screen...
Done filling...
If your screen filled red, you may be able to use the library at http://misc.ws
 
 
прочитано ридером взятым отсюда (примеры не работают)
 
Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)
 
diagnose any controller
reg(0x0000) 00 00 ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 99 99 00 Manufacturer ID
reg(0x0009) 00 00 61 00 00 Status Register
reg(0x000A) 00 08 Get Powsr Mode
reg(0x000C) 00 66 Get Pixel Format
reg(0x0030) 00 00 00 01 3F PTLAR
reg(0x0033) 00 00 00 01 40 00 00 VSCRLDEF
reg(0x0061) 00 00 RDID1 HX8347-G
reg(0x0062) 00 00 RDID2 HX8347-G
reg(0x0063) 00 00 RDID3 HX8347-G
reg(0x0064) 00 00 RDID1 HX8347-A
reg(0x0065) 00 00 RDID2 HX8347-A
reg(0x0066) 00 00 RDID3 HX8347-A
reg(0x0067) 00 00 RDID Himax HX8347-A
reg(0x0070) 00 00 Panel Himax HX8347-A
reg(0x00A1) 00 00 00 00 00 RD_DDB SSD1963
reg(0x00B0) 00 00 RGB Interface Signal Control
reg(0x00B3) 00 00 00 00 00 Frame Memory
reg(0x00B4) 00 00 Frame Mode
reg(0x00B6) 00 00 00 00 00 Display Control
reg(0x00B7) 00 00 Entry Mode Set
reg(0x00BF) 00 00 00 00 00 00 ILI9481, HX8357-B
reg(0x00C0) 00 00 00 00 00 00 00 00 00 Panel Control
reg(0x00C1) 00 00 00 00 Display Timing
reg(0x00C5) 00 00 Frame Rate
reg(0x00C8) 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA
reg(0x00CC) 00 00 Panel Control
reg(0x00D0) 00 00 00 00 Power Control
reg(0x00D1) 00 00 00 00 VCOM Control
reg(0x00D2) 00 00 00 Power Normal
reg(0x00D3) 00 00 32 29 ILI9341, ILI9488
reg(0x00D4) 00 00 00 00 Novatek
reg(0x00DA) 00 99 RDID1
reg(0x00DB) 00 99 RDID2
reg(0x00DC) 00 00 RDID3
reg(0x00E0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA-P
reg(0x00E1) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA-N
reg(0x00EF) 00 00 00 00 00 00 ILI9327
reg(0x00F2) 00 00 00 00 00 00 00 00 00 00 00 00 Adjust Control 2
reg(0x00F6) 00 00 00 00 Interface Control
 
hugoboss317
Offline
Зарегистрирован: 21.03.2013

Приведите сообщение в божеский вид. Поможем...

Секешфехервар
Секешфехервар аватар
Offline
Зарегистрирован: 06.09.2018

Hugoboss317 спасибки за #36, очень помогло !

Только один момент не понятен, маленькую картинку не во весь экран вывести не получается....

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Секешфехервар пишет:

Только один момент не понятен, маленькую картинку не во весь экран вывести не получается....

Что значит не во весь экран? А во весь экран выводится что ли?

Какое разрешение экрана?

Что именно не получается?

Названия файла .raw в коде правильно написано?

 

Секешфехервар
Секешфехервар аватар
Offline
Зарегистрирован: 06.09.2018

hugoboss317 , tft.load(70, 0, 345, 273, "OPEL.raw"); глядя на эту строчку решил что файлы должны обзываться "ххх.raw", но каким то чудом большую картинку назвал нормально потому она и работала )) спасибо !

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Так собственно вышеупомянутое изображение ни разу не на весь экран, по крайней мере по ширине.

Разрешение экрана 320х480, если такой же. А картинка 345х273. Я так понял не верно писали?

Секешфехервар
Секешфехервар аватар
Offline
Зарегистрирован: 06.09.2018

Да нет же вы неверно поняли, не настолько я туп, размерность выставил в соответствии с картинкой, файл сохраняя на флешку обозвал "xxx.raw", вместо того чтобы дать ему имя "xxx"... решил что файл нужно именовать так же как он вызывается из программы!

trubaenko@bk.ru
Offline
Зарегистрирован: 02.12.2020

ребята как тут фотку добавить??? какойто двацатый век с интерфейсом.