TFT LCD 3.2" 320x480 HX8357B как считать с экрана цвет точки по координатам?
- Войдите на сайт для отправки комментариев
Вс, 31/07/2016 - 23:40
Заливаю первой картинкой экран полностью. Вторая размером 16 на 16 пикселей должна двигаться поверх первой не затирая ее.
можно конечно обсчитывать и тянуть данные из масива первой картинки, но хочется ее менять во время работы, добавлять другое изображение, рисовать разные фигуры и не ограничиваться готовой картинкой.
вот и возник вопрос: а можно ли считать нужную область, или точку с экрана, чтоб потом вывести ее обратно?
подпишусь :-)
Какой софтиной рисуешь, там и смотри, есть рид-пиксель или нету.
Мануал https://cdn-shop.adafruit.com/datasheets/HX8357-D_DS_April2012.pdf - команда 2Е.
да про библиотеку не написал: utft
СПАСИБО мануал посмотрю, надо еще глянуть реализовано ли чтение в самой библиотеке или дописывать надо.
за мануал еще раз спасибо. тот что я нашел короче в два раза этот, насколько понимаю более полный.
посмотрел три библиотеки: UTFT, TFT_HX8357-master, Adafruit_HX8357_Library-master
ни в одной из них не нашел реализации функции чтения цвета пикселя. не написаны они.
TFT_HX8357-master основана на адафруте. как добавить в нее функцию чтения пикселя? подскажите плиз
Найти в дэйташите нужную команду (или убадиться, что это невозможно).
Кстати, по-моему на этот вопрос Вам уже ответили в посте №3.
Взять в библеотеке подпрограмму записи пикселя, скопировать, обозвать её читать пиксель, заменить команды записи, командами чтения и поставить return с прочитанными данными. Да тип п.п. void поменять на word. Обычно работало.
Обратите внимание на https://github.com/adafruit/Adafruit_ILI9340 - в этой библиотеке есть команды чтения SPI.
А этой https://github.com/adafruit/Adafruit_HX8357_Library - тоже есть всё. Вам нужна uint8_t Adafruit_HX8357::readdata(void) ...
у меня дисплей такой
http://ru.aliexpress.com/item/Free-shipping-3-2-inch-TFT-LCD-screen-modu...
и адафрут с ним не заработал по спи. видимо выводы не верно указаны. но это уже аппаратные вопросы...
спасибо всем откликнувшимся. пойду пробовать дописать библиотеку.
Вообще то это совсем не SPI экран. С ним ещё проще. Обычная параллельная шина.
жую мануал. это уже понял. два порта юзаются в tft_нч8357 библиотеке а и с, остальное пока не вкурил. на сколько я понимаю в нем есть видеопамять (GRAM) но как она организована еще не понял. как работать с ней пока тоже. попиксельно или блоками...
2Е команду подать можно. но не понятно что за аргументы у нее и что и откуда ловить в ответ.
как понял на 2Е отвечает про точку начиная с Start Column/Start Page positions и потом переходит на следующую точку. пока только голова кругом.
Аргументы теже самые, что и при записи. Сначала даешь команду выделение прямоугольной области, и потом читаешь ровно столько точек, сколько в этой области (Это может быть как одна точка, так и целый экран). Выдает значения видеопамяти=цвет пикселя. Подал один раз команду и только читаешь. Инкремент адреса в памяти автоматический. Затем можно этот прямоугольник записать в другое место экрана по тойже схеме. Подал комаду выделение такой же прямоугольной области в другом месте экрана, команду записи, и пишешь всю область. Главное за границы не выходить.
Аргументы теже самые, что и при записи. Сначала даешь команду выделение прямоугольной области, и потом читаешь ровно столько точек, сколько в этой области (Это может быть как одна точка, так и целый экран). Выдает значения видеопамяти=цвет пикселя. Подал один раз команду и только читаешь. Инкремент адреса в памяти автоматический. Затем можно этот прямоугольник записать в другое место экрана по тойже схеме. Подал комаду выделение такой же прямоугольной области в другом месте экрана, команду записи, и пишешь всю область. Главное за границы не выходить.
понял. спасибо.
Вернулся с отпуска. Продолжаю ковырять библиотеку UTFT.
как читать понял...пробую писать, надо не одну функцию LCD_Write_DATA переписать, LCD_Writ_Bus тоже и DDRA & DDRC подергать придется... пробую, о результатах доложу
сообщение удалено..
библиотека TFT_HX8357-master
пробую так, но не работает. видимо cs, wr не так дергаю...
help...
Все время выдает с порта 0x2E (46)
прошу помощи. видимо как-то не так я линиями управления дергаю.
O'e конечно не правильно. даташит 18 страница мене в руки...
чтотакое Dummy read ?
вызывает вопрос соответствия сигналов описаных в даташите - объявленным в библиотеке
в даташите: CSX, DCX, WRX_SCL, RDX
в библиотеке : _cs = 40 нога, _rs = 38 нога, _rst = 41нога, _wr = 39, _fcs = 44
думаю CSX =_cs, WRX_SCL =_wr, RDX наверно _rs, _rst наверно ресет и мне не нужен остается что DCX = _fcs
правильно или нет? ...---... , 000 111 000, S_O_S
читать надо как на стр.18 даташита?
DBI-B system interface protocol?
Мануал https://cdn-shop.adafruit.com/datasheets/HX8357-D_DS_April2012.pdf - команда 2Е.
разбираюсь сижу почуть. есть разница в дисплеях, точнее в описаниях к дисплеям.
ссылка приведена на мануал с буквой после номера D. У меня же дисплей, по заверениям продавца, с буквой B.
нашел вот такой мануал на него. может кому-то поможет. Есть разница!
https://www.crystalfontz.com/controllers/Himax_HX8357-B_January_2010.pdf
Аргументы теже самые, что и при записи. Сначала даешь команду выделение прямоугольной области, и потом читаешь ровно столько точек, сколько в этой области (Это может быть как одна точка, так и целый экран). Выдает значения видеопамяти=цвет пикселя. Подал один раз команду и только читаешь. Инкремент адреса в памяти автоматический. Затем можно этот прямоугольник записать в другое место экрана по тойже схеме. Подал комаду выделение такой же прямоугольной области в другом месте экрана, команду записи, и пишешь всю область. Главное за границы не выходить.
не получается читатать... алгоритм чтения не пойму. Как считать с портов понятно.
как передернуть экран, чтоб следующий пиксел на порты вывел не понятно? вроде надо RDX дергать, но где он физически ХЗ.
На какую ногу arduino приходит RDX экрана ?
И не уверен что интерфейс правильно понимаю? чему равняются IM2, IM1, IM0
Первое, убедитесь что у вас на шилде выведен сигнал RD.
Второе, читать надо не из PORTx, а с PINx. Проверено для режима 8/16 бит.
Алгоритм следующий, выстанавливаем порт на вход DDRC = 0x00, DDRA = 0x00, выбираем TFT(СS = low), устанавливаем RD (WR = high, RD = low), считываем старший и младший байты hd = PINNC, ld = PINA, снимаем сигнал чтения, снимаем сигнал выбора TFT, преводим порт на вывод данных.
В библиотеке UTFT не нашел не GET_pixel(), не Read_pxel() функций.
еще б добавил, что перед этим надо диспу послать команду(регистр) чего мы хотим от него, чтоб он нам это вывел на порт.
у меня дисплей такой
http://ru.aliexpress.com/item/Free-shipping-3-2-inch-TFT-LCD-screen-module-Ultra-HD-320X480-for-Arduino-MEGA-2560/32255199317.html?spm=2114.13010608.0.106.VZZfhE
и адафрут с ним не заработал по спи. видимо выводы не верно указаны. но это уже аппаратные вопросы...
спасибо всем откликнувшимся. пойду пробовать дописать библиотеку.
нет у него RD .
Только вскрытие этого шилда поможет вывести RD. Или взять шилд где он уже выведен, чаще всего это адафруитские 8ми битные шилды. в UTFT нет считывания. В адафруите уже есть считывание , перед инитом в поисках ID он считывает с нескольких адресов, так вот , если хотите считать цвет точки , то ещё изучите даташит , по каким регистрам (закидывая координаты нужного пикселя) считать пиксель (цвет).
В общем ничего сложного, дорогу осилит идущий. тем более в адафруите уже организовано считывание.
Второе, читать надо не из PORTx, а с PINx. Проверено для режима 8/16 бит.
почему так не понял. контроллер экрана выдает данные в последовательном режиме?
буду смотреть распиновку экрана и откуда у него что растет.
Вариантом не мало, можно взять шилд без адаптации для 5 В, на них как правило выведен RD, и сваять резистивные токоограничивающие цепи. И очень тонко подмечено, что перед тем как чтото писать в программе надо изучить даташит на устройство. Что касается вывода, если SPI, то да вывод происходит последовательно. Но в зависимости от типа индикатора и его инициализации IM0-3, он может работать в разных режимах.
отклеил экран от шильда.
на шлейфе надпись
TFT8K4132FPC-A1-E
TRULY-M
на обороте экрана M201100326
TFT1P2875-V2
т.к экран требует 3.3v для i\o портов на шильде установлены 3 микросхемы для согласования
HC245
распиновку кабеля шлейфа не нашел.
еще б добавил, что перед этим надо диспу послать команду(регистр) чего мы хотим от него, чтоб он нам это вывел на порт.
у меня дисплей такой
http://ru.aliexpress.com/item/Free-shipping-3-2-inch-TFT-LCD-screen-module-Ultra-HD-320X480-for-Arduino-MEGA-2560/32255199317.html?spm=2114.13010608.0.106.VZZfhE
и адафрут с ним не заработал по спи. видимо выводы не верно указаны. но это уже аппаратные вопросы...
спасибо всем откликнувшимся. пойду пробовать дописать библиотеку.
нет у него RD .
Только вскрытие этого шилда поможет вывести RD. Или взять шилд где он уже выведен, чаще всего это адафруитские 8ми битные шилды. в UTFT нет считывания. В адафруите уже есть считывание , перед инитом в поисках ID он считывает с нескольких адресов, так вот , если хотите считать цвет точки , то ещё изучите даташит , по каким регистрам (закидывая координаты нужного пикселя) считать пиксель (цвет).
В общем ничего сложного, дорогу осилит идущий. тем более в адафруите уже организовано считывание.
RD нет в библиотеке. есть ли у него RD еще вопрос схемы я не видел.
адафрутовская библиотека работает по спи, а тут параллельный.
в какие регистры закидывать понятно. определяем област - начало и конец, нулим dc, rd повышаем, в порт с кидаем 2Е, дергаем wr. далее надо ловить данные дергая rd, повысив dc
в библиотеке нет и DC тем не менее команда записи 2С как-то работает...помоему названия не сходятся... судя по функции writecommand в ноль уходят cs и rs - ноги 40 и 38 дуины2560 соответсвенно.
Вариантом не мало, можно взять шилд без адаптации для 5 В, на них как правило выведен RD, и сваять резистивные токоограничивающие цепи. И очень тонко подмечено, что перед тем как чтото писать в программе надо изучить даташит на устройство. Что касается вывода, если SPI, то да вывод происходит последовательно. Но в зависимости от типа индикатора и его инициализации IM0-3, он может работать в разных режимах.
шильд уже взят. и даташит утверждает, что читать возможно.
Вариантом не мало, можно взять шилд без адаптации для 5 В, на них как правило выведен RD, и сваять резистивные токоограничивающие цепи. И очень тонко подмечено, что перед тем как чтото писать в программе надо изучить даташит на устройство. Что касается вывода, если SPI, то да вывод происходит последовательно. Но в зависимости от типа индикатора и его инициализации IM0-3, он может работать в разных режимах.
шильд уже взят. и даташит утверждает, что читать возможно.
Фото шлейфа покрупнее и почетче выложите. Читать можно если вывод RD выведен как минимум на шлейф, тогда его можно вывести на любой свободный пин и подключит к ардуино. По другому DC определяют в хедере как RS, ноль команда, единица данные.
спасибо. кое-что проясняется:
на шилде стоят микрухи hc245 для выравнивания напряжения
даташит на них глянул http://www.ti.com/lit/ds/symlink/sn54hc245.pdf
зарисовал разводку на плате. есть минус они имеют вход дир регулирующий направление передачи данных. так вот. он разведен на +3.3. что говорит о том, что включено направление передачи от мк к лсд и считать ничего не выйдет, надо заводить на отдельную ногу мк и дергать для получения данных.
но это не все. в соответствии с даташитом на лсд RD выведен, если не используется сажается на + (+3.3) решил что возможно так и есть. нарисовал известные ноги управления. если не ошибся похоже что нога 44 и не идет некуда сигнал с 45 идет на HC245 на вход А5.
шлейв экрана 44 пиновый, распиновку частично нарисовал. сигналы cs,wr,rs(dc) сидят рядом на выводах 12,13,14 соответственно.
16-ресет
с 17 по 34 идет 18 линейная шина данных с 34 по 16 к ним через HC245 идут данные с портов АиС МК.
40,41,42,43 - похоже для подключения тачскрина.
со 2 по 7 через резистор 2 ома посажено на землю
8, 36, 39, 44 на землю
и интересное:
1, 11, 15 - идут на +3.3 1-видимо питание. а вот две другие 11 и 15 могут быть RD во-первых тк. на них сидит +, во-вторых 12,13,!4 -ноги рядом.
нашел на шлейфе рядом с самим экраном (а не там где для пайки!) ногу куда идет ресет (по даташиту вроде 38, но обозначены всего1 и 176 на экране, по мануалу их больше 1000 смотрю, не разобрался). через 4 от него 18 битная шина данных.а вот в другую сторону должны идти IM2,IM1,IM0 и вроде должно получиться 010. но пока непойму. 3 свободных пина на шлейфе 9, 10, 11(тут +) не выходит настройки на 16 бит передачу...
нога 15 осталась зажатой со всех сторон. думаю это и ест RD.
вот такие домыслы...
надо оттяпать дир на 2-х из 3 HC245, те которые к портам завязаны АиС и завести на какую нить ногу. посмотреть надо +5 с дуни можно или тоже согласовывать. посмотрел можно.
надо проверить про ноги 44 и 45 что куда идет. возможно rd завести на 45 через ногу B5 микросхемы HC245 либо паять делитель, на резисторах или транзисторах, кому как нравиться (питание оторвать надо предварительно).
далее править библиотеку под две дополнительные ноги - дир и рд и смотреть что выйдет.
зы на этом пока все. фотку шлейфа телефоном делать смысла нет, мелко не четко выйдет. забиру фотик попробую.
MacSim, да вы точно решили разобраться в этом :)
этот дисплей не SPI , это SPI пины карты памяти и флэша 8пин устанавливаемого самостоятельно. Адафруит либы есть и SPI и параллельной шины. Этот дисп имеет 16ти бит параллельную шину По адафруиту на 16ть бит пока неподскажу , не проверял.
Гляньте примерно как искать RD (подставлять картинку из даташита, если не нашли распиновку) это и последущее сообщение: http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=3#comment-216650 , можете всю тему глянуть. И вот ещё темка http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd как выводилось RD .
// Далее возможно не ваш случай, у вас двунаправленные HC245 , проследите пины меняющие их направление, мож RD к ним выведен:
В некоторых случаях нужен другой шилд . Там прийдётся сдувать нафиг микрухи и ставить вместо них 10ком резисторы. Т.к. на других шилдах, где выведен RD , применяют либо резисторы, либо другие микрухи - двунаправленные, и RD также подведен к ним , чтобы менять их направление. Посоветовал, лучше бы на резисторах сделать , проще, надёжно и безопасно (долго объяснять). Подсветка скорее всего запараллелена на стаб как смд транзюк, с маркировкой "662K" , поэтому напряжение на диспе выше 3,3в не поднимется, это хорошо.
MacSim, да вы точно решили разобраться в этом :)
этот дисплей не SPI , это SPI пины карты памяти и флэша 8пин устанавливаемого самостоятельно. Адафруит либы есть и SPI и параллельной шины. Этот дисп имеет 16ти бит параллельную шину По адафруиту на 16ть бит пока неподскажу , не проверял.
Гляньте примерно как искать RD (подставлять картинку из даташита, если не нашли распиновку) это и последущее сообщение: http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=3#comment-216650 , можете всю тему глянуть. И вот ещё темка http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd как выводилось RD .
// Далее возможно не ваш случай, у вас двунаправленные HC245 , проследите пины меняющие их направление, мож RD к ним выведен:
В некоторых случаях нужен другой шилд . Там прийдётся сдувать нафиг микрухи и ставить вместо них 10ком резисторы. Т.к. на других шилдах, где выведен RD , применяют либо резисторы, либо другие микрухи - двунаправленные, и RD также подведен к ним , чтобы менять их направление. Посоветовал, лучше бы на резисторах сделать , проще, надёжно и безопасно (долго объяснять). Подсветка скорее всего запараллелена на стаб как смд транзюк, с маркировкой "662K" , поэтому напряжение на диспе выше 3,3в не поднимется, это хорошо.
да решил разобраться. знаю дисплей параллельный 18! бит. и все они на шлейфе. подключен и настроен только на 16. пины меняющие направление подтянуты как и писал к плюсу. RD думается мне тоже к плюсу подтянут.
по первой ссылке инфу читал, от части это и помогло. по второй не видел интнресно, почитаю.
сигналы спи конечно к флешке идут. на шилде есть место под установку микрухи U5, видимо флеш памяти но какой вопрос. распиновку зарисовал ноги 1и2и6 к +3.3v: 3 к В7->А7->sck:4->B6->A6->mosi:5->gnd:7->напрямую к miso и к карте флеш: 6-> B5->A5-> к пину 45 дуни (SS должно быть). я юзал память 24С... но она и2с. какая тут микруха должна подойти чтоб точно по пинам стала может кто подскажет? ...пусто место...не должно быть, может припаять подходящую и не юзать карточку флеш.
Шилд может и нужет в некоторых случаях другой, но в данном у меня есть паяльник. самодельный, станция.
а вот про 10к резисторы поподробнее... пойду схемку делителя посмотрю...
и... IM2 похоже на минусе сидит в самом шлейфе.
зы... а все так хорошо начиналось. хотел всего лишь мышкой по экрану возить... а микруха флеш вроде CAT150xx по пинам схожа
сигналы спи конечно к флешке идут. на шилде есть место под установку микрухи U5, видимо флеш памяти но какой вопрос. распиновку зарисовал ноги 1и2и6 к +3.3v: 3 к В7->А7->sck:4->B6->A6->mosi:5->gnd:7->напрямую к miso и к карте флеш: 6-> B5->A5-> к пину 45 дуни (SS должно быть). я юзал память 24С... но она и2с. какая тут микруха должна подойти чтоб точно по пинам стала может кто подскажет? ...пусто место...не должно быть, может припаять подходящую и не юзать карточку флеш.
Шилд может и нужет в некоторых случаях другой, но в данном у меня есть паяльник. самодельный, станция.
Можно поставить w25Qxxx. Это SPI память со страничной организацией по 256 байт и объем приличный, не только шрифты можно расположить но и подготовленные задники(статический фон), что повысит производительность при выводе полного экрана и снизит нагрузку на мк. По сути готовую страничку можно будет выводить с помощью несколько подправленной функции Screen. Я такую поставил на шилд, там вроде и отдельный вывод CS под нее есть.
как его (
HX8357B)
вобще запустить?
как его (
HX8357B)
вобще запустить?
почему поиском не пользуетесь? так же быстрее и больше инфы.
в яндекс иль гугл arduino hx8357b все пережёвано на много раз .
http://arduino.ru/forum/apparatnye-voprosy/kak-podklyuchit-displei-32-lcd-module?page=2#comment-297652
slider - гуглил инфы почти нет
дисплей то удалось запустить,а вот с CH340 никак чет не получается
у кого то есть библиотека для протеуса для дисплея сконтроллером HX8357B ?
Заливаю первой картинкой экран полностью. Вторая размером 16 на 16 пикселей должна двигаться поверх первой не затирая ее.
можно конечно обсчитывать и тянуть данные из масива первой картинки, но хочется ее менять во время работы, добавлять другое изображение, рисовать разные фигуры и не ограничиваться готовой картинкой.
вот и возник вопрос: а можно ли считать нужную область, или точку с экрана, чтоб потом вывести ее обратно?
Это - исходное сообщение темы, отправлено в 2016 году:
Заливаю первой картинкой экран полностью. Вторая размером 16 на 16 пикселей должна двигаться поверх первой не затирая ее.
можно конечно обсчитывать и тянуть данные из масива первой картинки, но хочется ее менять во время работы, добавлять другое изображение, рисовать разные фигуры и не ограничиваться готовой картинкой.
вот и возник вопрос: а можно ли считать нужную область, или точку с экрана, чтоб потом вывести ее обратно?
А это - последнее, отправлено сегодня:
Заливаю первой картинкой экран полностью. Вторая размером 16 на 16 пикселей должна двигаться поверх первой не затирая ее.
можно конечно обсчитывать и тянуть данные из масива первой картинки, но хочется ее менять во время работы, добавлять другое изображение, рисовать разные фигуры и не ограничиваться готовой картинкой.
вот и возник вопрос: а можно ли считать нужную область, или точку с экрана, чтоб потом вывести ее обратно?
Даже орфографические ошибки те же самые.
MacSim, да вы точно решили разобраться в этом :)
этот дисплей не SPI , это SPI пины карты памяти и флэша 8пин устанавливаемого самостоятельно. Адафруит либы есть и SPI и параллельной шины. Этот дисп имеет 16ти бит параллельную шину По адафруиту на 16ть бит пока неподскажу , не проверял.
Гляньте примерно как искать RD (подставлять картинку из даташита, если не нашли распиновку) это и последущее сообщение: http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=3#comment-216650 , можете всю тему глянуть. И вот ещё темка http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd как выводилось RD .
// Далее возможно не ваш случай, у вас двунаправленные HC245 , проследите пины меняющие их направление, мож RD к ним выведен:
В некоторых случаях нужен другой шилд . Там прийдётся сдувать нафиг микрухи и ставить вместо них 10ком резисторы. Т.к. на других шилдах, где выведен RD , применяют либо резисторы, либо другие микрухи - двунаправленные, и RD также подведен к ним , чтобы менять их направление. Посоветовал, лучше бы на резисторах сделать , проще, надёжно и безопасно (долго объяснять). Подсветка скорее всего запараллелена на стаб как смд транзюк, с маркировкой "662K" , поэтому напряжение на диспе выше 3,3в не поднимется, это хорошо.
да решил разобраться
Уважаемый Максим, так удалось-ли в итоге разобраться?! Самому очень нужна эта возможность. В частности для снятия скриншотов экрана для документирования программы. При беглом просмотре библиотеки Adafruit_HX8357_Library так и не нашел в ней вожделенной функции. Кто-то может подскажет у каких дисплеев всё таки есть такая функция в библиотеке? Очень не хочется велосипед изо-ть!