Arduino MEGA 2560 + TFT 3.5" Глюки тачскрина, помогите победить.
- Войдите на сайт для отправки комментариев
Доброго времени суток.
Приобрел Arduino Mega 2560 R3 и к нему TFT Shield 3.5" aitendo R61581.
1) Залил библиотеку UTFT, загрузил демо скетч, выбрал свой тип контроллера, залил.
Мега запустилась, экранчик отработал демку показав все картинки.
2) Залил библиотеку UTouch, открываю первым делом скетч калибровки поправляя в нем пару строчек
#define TOUCH_ORIENTATION LANDSCAPE // Было PORTRAIT // Standard Arduino Mega/Due shield : <display model>,38,39,40,41 UTFT myGLCD(R61581,38,39,40,41); // указал код моего дисплея, он в саппорте в pdf есть // Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2 UTouch myTouch( 6, 5, 4, 3, 2); Все остальное без изменений
Заливаю скетч, калибрую экран, он выдает попроавки для UTouchCD.h
CAL_X 0x00000000UL
CAL_Y 0x00000000UL
CAL_S 0x801DF13FUL
Я так подозреваю что это не совсем верные поправки, тем более что тыкая не в колибровочные метки (а в любое место экрана) значения выдаются теже самые
Сооттветственно я их не трогаю и не меняю, т.к. это скорее всего лажа и заливаю простой скетч выложенный на Хабре
#include <UTFT.h> UTFT myGLCD(R61581,38,39,40,41); #include <UTouch.h> UTouch myTouch(6,5,4,3,2); extern uint8_t BigFont[]; void setup() { myGLCD.InitLCD(); myGLCD.setFont(BigFont); myTouch.InitTouch(); myGLCD.clrScr(); } void loop() { int X_RAW; int Y_RAW; int X; int Y; if (myTouch.dataAvailable() == true){ myTouch.read(); X_RAW=myTouch.TP_X; Y_RAW=myTouch.TP_Y; X=myTouch.getX(); Y=myTouch.getY(); myGLCD.clrScr(); myGLCD.print("X", 100,80); myGLCD.print("Y", 200,80); myGLCD.print("PIX", 20,100); myGLCD.print("RAW", 20,120); myGLCD.printNumI(X, 100, 100); myGLCD.printNumI(Y, 200, 100); myGLCD.printNumI(X_RAW, 100, 120); myGLCD.printNumI(Y_RAW, 200, 120); } }
Результат его работы показать координату X Y при нажатии на экран. У меня же результат куда бы не нажал X -1 и Y -1
Помогите понять куда копать, уже убил на этот тач не один час
Ссылка на TFT Shield если нужно идентифицировать
Никто ничего не знает по этой теме ?
Все только светодиодики зажигают что ли?
все жки запускают которых нет у тебя
Доброго времени суток!
Аналогичный экран тачскрин вообще не реагирует на нажатия!
Как его проверить?
У меня реагирует на нажатия, но правильно откалибровать не получается. выдает координаты Х -1 и Y -1 куда бы не нажал.
Есть подозрение, что
UTouch
не поддерживает этот тач. В таком случае надо брать код от производителяв том то и дело, что в UTFT есть он в пооддержках. Он выбирается как CTE35IPS или R61581 и демка прекрасно рабоатет. и Продаваны и Гуглопоиск сслыается на то что инит как CTE35
А вот при запуске калибровки , колибровку то он проходит по точкам , но поправки показывает
CAL_X 0x00000000UL
Так utft и utouch - это две совершенно разные вещи, одна работает с tft, а с другая - с тачем. Поэтому одно может работать, а другое - нет.
Смотрите, какой там контроллер тача (не путать с контроллером экрана) и ищите к нему "родную" библиотеку
так модель TFT выбирается только в UTFT а в Utouch прописываются только пины 6,5,4,3,2
Шилд с экраном втыкается в мегу и подключается к пинам меги - ( 0-7) (22 -53) и питалово с землей и резетом.
Если у тебя есть на чем попробовать код верхнего скетча, на свежих библиях UTFT и UTouch Версия Друины 1.0.5 (вроде как последняя) проверь, будет ли скетч у тебя выдавать разные координаты нажатия на ТФТ
Смотрите, какой там контроллер тача (не путать с контроллером экрана) и ищите к нему "родную" библиотеку
И как усмотреть контроллер именно тача ?
Единственная читабельная надпись на плате со стороны разъемов - 3.5" aitendo R61581
Со стороны экрана на плате только кнопка RESET надписей нет
В этом экране контроллер тачскрина XTP2046 (аналог ads7846) только такое нашел. В теории Utouch должна поддерживать!
Но у меня в отличии от автора темы тачскрин вообще не реагирует на нажатия, демки с картинками работают- нет вопросов. А примеры с тачскрином = нет реакции вообще!
У меня экран подключен к Arduino Due напрямую.
Может пины тачскрина не те? Пробовал пины, как указано здесь - тоже не работает http://forum.arduino.cc/index.php?topic=157068.0
В описании к шилду для Due нашел:
По поводу подключения Шилда к DUO встречал такой камент
Смущает 1 пункт. Почему эти файлы надо заменить в папке драйвера ili9481 ?
и ни слова о подключении Тача. Просто TFT у меня и так работает.
Посмотрел внимательнее UTFT.h в нем при выборе типа CTE32HR используется драйвер из папки ili9481
(8-О)
В этом экране контроллер тачскрина XTP2046 (аналог ads7846) только такое нашел. В теории Utouch должна поддерживать!
Но у меня в отличии от автора темы тачскрин вообще не реагирует на нажатия, демки с картинками работают- нет вопросов. А примеры с тачскрином = нет реакции вообще!
Кстати, нашел увеличилку и прочел у сетя правильнее XPT2046 а не XTP
В этом экране контроллер тачскрина XTP2046 (аналог ads7846) только такое нашел. В теории Utouch должна поддерживать!
Это в теории. А на самом деле Utouch поддерживает некий "стандартный" тип тача. Как только шаг в сторону - то либо допиливать Utouch, либо использовать другую библиотеку
очередной день поисков по инету привелвот к чему
1) Найден ДатаШит на модуль R61581 и там же была ссылка на текстовик с "Инициализацией" с вот таким содержанием ( я не знаю как тут приатачить)
Это в теории. А на самом деле Utouch поддерживает некий "стандартный" тип тача. Как только шаг в сторону - то либо допиливать Utouch, либо использовать другую библиотеку
А есть еще варианты библиотек ? кроме Utoucha
Я уже грешным делом подумываю купить другой TFT типа стандартный как у всех что бы воткнуть и заработало.
Подскажите куда засунуть этот код инициализации ? кудато в либу или в скетче размещать ? одноразовая это функция типа калибровки тача или кажды раз использовать ?
Собственно, это инициализация контроллера (и у меня подозрение, что без тача). Вызов этой функции просто засовывается в setup(), чтобы прогнался один раз.
Но одной только инициализацией сыт не будешь - дальше с девайсом-то надо как-то работать...
А есть еще варианты библиотек ? кроме Utoucha
Искать и пробовать - с чем-то да заведется
Я уже грешным делом подумываю купить другой TFT типа стандартный как у всех что бы воткнуть и заработало.
Это, конечно, эффективный способ, но получается дорого
Как проверить, что тач работает (методические указания)
Из примеров UTouch берем Utouch_Calibrarion и дорабатываем:
вместо фрагмента кода
засовываем
(не забываем засунуть в setup строчку
Serial.begin(speed) )
заливаем в ардуину доработанный скетч, тыкаем пальцем и смотрим на результат в терминале ком-порта. Если циферки меняются, то тач работает, но UTouch не может пересчитать эти координаты в "нормальные"
Залил такой скетчик
результат такой
координаты всегда -1;-1
это не координаты , а ответ utouch об ошибке или скажем непонятке
нужно как по мне глянуть что там с datacount происходит
Кстати, нашел увеличилку и прочел у сетя правильнее XPT2046 а не XTP
Кстати, нашел увеличилку и прочел у сетя правильнее XPT2046 а не XTP
Я свой экран подключаю напрямую в Мегу 2560 R3 нижние ноги шилда экрана - питалово в Меге, верхние ноги шилда - D0-D7 на Меге , 36 ножный боковой разъем в свой боковой разъем Меги D22-D53 GND
Если у тебя не Мега а DUE то я где то встречал что нужно в библиотеке раскоментировать строку что используется шилд на DUE , только уже не помню где и в какой именно либе. если надо найду
при активации в Utouch указать ноги (6,5,4,3,2) в такой версии у меня работает но что то с чтением данных из тача не так.
А сам экран работает ? демки картинок запустил ?
Запустил свой код с монитором что в функции
ответ одинаков, куда бы не нажал
Демки картинок работают - нет вопросов - все красиво и быстро!
А тачскрин нет реакции, загружал пример, где экран закрашен в определенный цвет, а при нажатии на любую точку экрана цвет меняется, так вот при загрузке экран сразу поменял цвет. Такое ощущение, что тачскрин входит сразу в режим "занят".
Экран у меня подключен напрямую к Due без шилда. Нашел даташит на XPT2046 с типовой схемой включения (один в один с ADS7846), проверяю распиновку. Тут на плате 5 рабочих сигналов XPT2046 пущены через "сборки" вроде "преобразователя уровней" сопротивление около 10 кОм (по 4 шт). Проверю осциллографом, как там сигналы SPI - бегают или нет!
Прозвонил контакты - все соответствует (6,5,4,3,2)! Буду смотреть сигналы.
datacount=-2
откуда datacount=0 (в блоке выше) подсчёта небыло
пробуй смотреть выше
и смотри по условиям может действительно показания тача за пределами измеряемых.
Простой скетч:
Экран черный, при загрузке белый, сразу же закрашивается черным, то есть dataAvailable() всегда false = данные с тачскрина не поступают!
datacount=-2
откуда datacount=0 (в блоке выше) подсчёта небыло
пробуй смотреть выше
и смотри по условиям может действительно показания тача за пределами измеряемых.
datacount=0 прописано в начале функции Read
отслеживаю тут
Результат
А может проблема в том что монитор работает только в 16 битном режиме ? , а функция чтения touch_ReadData() запускается 12 или 13 раз , верно?
Простой скетч:
Экран черный, при загрузке белый, сразу же закрашивается черным, то есть dataAvailable() всегда false = данные с тачскрина не поступают!
Опробовал я твой скетч у себя. При запуске экран заливается черным, если нажать и держать тач то меняется заливка на бирюзовый, если отпускаешь снова черная заливка.
У тебя при нажатии и держании пальца не меняется заливка ?
Исходя из всего выше изложенного либо тач нерабочий либо utouch не умеет с ним работать
Тут есть https://github.com/watterott/Arduino-Libs либа под это контроллер правда неизвестно подружится ли она с UTFT
также почитай эту ветку там старая версия с примером есть
http://forum.arduino.cc/index.php?PHPSESSID=n5k6h7sv5aapakbpra353kltq1&topic=61579.0
Результат
Судя по нулевым данным, прочитать координаты из контроллера не получается :(
А может проблема в том что монитор работает только в 16 битном режиме ? , а функция чтения touch_ReadData() запускается 12 или 13 раз , верно?
функция принимает 12 бит, последовательно тактируя
CLK и
проверяя high/low наDOUT
У тебя при нажатии и держании пальца не меняется заливка ?
Нет! Ни какой реакции.
Результат
Судя по нулевым данным, прочитать координаты из контроллера не получается :(
Мне кажется я нашел проблему своего экрана. Вооружился тестером прозвонил контакты шилда на которые завязан Тачскрин D6,D5,D4,D3,D2 и оказалось что D6 и D5 закорочены. :((((
На плате от контроллера тачскрина XPT2046 дорожки идут к мелким деталькам обозначенным на плате как RP10 И RP11 на которых одна надпись толи EOL толи 103 смотря как посмотреть. Подозреваю что это какие то согласующие сопротивления (может быть что то еще ) во всяком случае тестер показал 10 кОм. Так вот выводы сопротивлений уходящие к ногам шилда которые втыкаются в Мегу в D6 и D5 закорочены. А если померять сопротивление на ногах от контроллера между этими двумя ногами, то она удвоенное 20 кОм. Насколько позволила рассмотреть увеличилка похоже при пайке повисла "сопля" между этими ногами :((( что теперь делать не знаю, нет у меня таких ювелирных паяльных способностей.
А может выпаять нафиг эту малипуську и впаять обычные резисторы ?
отнеси шилд в ремонт мобил там за минуту и 1-2 бакса сделают. а развориш )) вообще нахоляву, ремонтники любят необычные железки в руках покрутить.
Доброго времени суток! То же вот думаю: Due уровень логики 3,3 В а эти резисторные сборки маркировка 103 = по 10 кОм уменьшают уровень сигнала еще ниже и контроллер тачскрина не работает! Хотя возникают вопросы:
- А почему тогда контроллеру экрана "хватает" уровня напряжения там такие же сборки на все контакты стоят?
- XPT2046 по SPI работает в режиме "slave" или "master"?
Все таки надо смотреть сигналы! В даташитах смотрю-смотрю ..... видать не могу высмотреть!
В даташите уровни сигналов для XPT2046 2,7 В - 5 В
А для R61581 1,65 B - 3,3 B
Может это причина, сборки по 10 кОм на все входы поставлены.
отнеси шилд в ремонт мобил там за минуту и 1-2 бакса сделают. а развориш )) вообще нахоляву, ремонтники любят необычные железки в руках покрутить.
Сносил шилд в ремонт. В "сурьезной" мастерской забрали посмотреть под микроскоп и через 10 мин сказали что там непропай ноги как будто , и вообще что "это мелкопай" и никто не хочет браться. Зашел в мастерскую "забегаловка" и говорю "Нетрадиционным ремонтом занимаетесь? " Смотрю у него глазки загорелись и говрит "показывай что это , кто это и куда это..." Дал посмотреть, парень посмотрел за ширмой 2 мин и говорит - "Готово. Забирай. Нет больше коротыша. Я его иголкой сковырнул, это остатки флюса были." Вдобавок еще спиртом почистил это место и бесплатно отдал :)
Подключил , заработало.... Урааа. Две недели танцев с бубнами и библиотеками прошли зря, а оказался "китайский" коротыш на ногах.
Теперь есть еще такая трабла. смотрел ветку http://arduino.ru/forum/apparatnye-voprosy/tachskrin-perevernuta-koordinata-kh
располагаю дисплей в LANDSCAPE (как в посте 10) разъем слева
пишу в скетче
Координаты Y нормальные а X перевернутые. Меняю в файле UTouch.cpp
местами и все становится ок, как на картинке, верхний левый угол 0;0 нижний правый 480;320 При этом там же жестко прописал
теперь располагаю дисплей в PORTRAIT (как в посте 10) разъем снизу
пишу в скетче
Координаты пока файле UTouch.cpp не трогаю ( при этом Х поменяны) то верхний левый угол 320;480 нижний правый 0;0 т.е. если смотреть что разъем снизу то вот такая перевернутость координат, а если перевернуть дисплей то координаты становятся нормальными , а вот надпись на дисплее вверх ногами.
Я конечно не планирую дисплей во время работы крутить, но все же ?
Доброго времени суток! То же вот думаю: Due уровень логики 3,3 В а эти резисторные сборки маркировка 103 = по 10 кОм уменьшают уровень сигнала еще ниже и контроллер тачскрина не работает! Хотя возникают вопросы:
А ты уверен что этот шилд R61581 совместим с DUE ? У продавана моего экранчика была надпись что он для Меги 2560 И где то я встречал при вариантах отдельно экран отдельно шилд для экрана и там была классификация что для Меги такой шилд, для Дуе другой шилд
Координаты пока файле UTouch.cpp не трогаю ( при этом Х поменяны) то верхний левый угол 320;480 нижний правый 0;0 т.е. если смотреть что разъем снизу то вот такая перевернутость координат, а если перевернуть дисплей то координаты становятся нормальными , а вот надпись на дисплее вверх ногами.
Я конечно не планирую дисплей во время работы крутить, но все же ?
Тут штука в том, что контроллер тача считает координаты несколько иначе, чем UTouch
Так что либо в своей программе это корректировать, либо несколько переписать сам UTouch
Меня как бы устраивает вариант Ландскейпа. Верхний левый угол 0,0 нижний правый макс
А ты уверен что этот шилд R61581 совместим с DUE ? У продавана моего экранчика была надпись что он для Меги 2560 И где то я встречал при вариантах отдельно экран отдельно шилд для экрана и там была классификация что для Меги такой шилд, для Дуе другой шилд
Не уверен! Разница в уровнях логики Due - 3,3 B Mega2560 - 5 В. Пока времени нет спокойно сесть, промерить, выпаять сборки на контроллере тачскрина и т. д. Одни теоретические размышления! Но экран, изображение работают отлично! Честно говоря купил комплект Due и данный экран по случаю, цена устроила и ждать не надо было. На эбэй есть родной шилд для Due под 40 пин и 36 пин мониторчики, может куплю.
Изучи вот эту тему , твой вариант DUE + Экран. Правда там другой экран и через дуевский шилд. Возможно в этом ответ на вопрос почему не работает тач
http://habrahabr.ru/post/196600/
http://habrahabr.ru/post/196864/
Спасибо. Изучал я информацию по этим ссылкам. Ответа там нет, кроме одного, купить такие же шилд и экран!
Вот что написано в описании шилда к Меге от Сoldtears
The IO of arduino MEGA is officially 5V, TFT LCD use 3.3V IO. This CTE TFT LCD/SD shield for arduino MEGA provides the connection to a TFT LCD Module directly without flying wires.
The shield use TRUE 5v to 3.3V level translation IC, therefore, it is compatible with many TFT LCD modules. Compatibility is highest when compared to ordinary TFT Shield, which use resistors or buffer to "shift" 5V to 3.3V. Compatibility issues may arise when using this method to translate IO level to 3.3V, especially at high write speed.
Это как раз твой случай, экран на шильде заточен под Мегу с напряжением 5V на логике, а ты его втыкаешь в DUE с напругой 3,3V.
Если не работает только Тач попробуй закоротить сопротивления около ножек для тача, т.е. пустить сигнал напрямую с контроллера тача на свою DUE
Приобрел у китайцев вот это . Продавец прислал файлик и сказал что все должно работать.
Закинул библиотеки из файлика в каталог ардуино и запустил демки. Демка UTFT запустилась и работает отлично.
Запускаю Utouch_Calibrarion. Скетч запустился, но на нажатия не реагирует. Пробовал выводить данные на компорт - результата ноль.
В коде записаны такие строчки
Подскажите как проверить работоспособностьтачскрина?
Еще одна китайская "версия" экрана!
Выпаял сборки, припаял перемычки, прозвонил, загрузил скетч с калибровкой = не работает! Тачскрин ушел на свалку, как не рабочий, буду пробовать другой экран. Обычные издержки китайпрома!
Доброго времени суток.
Немного предыстории для начала.
Имею плату iBoard Pro http://imall.iteadstudio.com/iboard-pro.html
и TFT с тачскрином ITDB02-4.3 http://imall.iteadstudio.com/display/tft-lcm/im120419007.html
Контролер тача - XPT2046.
Графика запустилась с пол-пинка.
Тач через UTouch работать отказался полностью:
1. нажатие не видит вообще. переписал dataAvailable(), сделал на digitalReadFast - заработало.
2. координаты или -1 или какой-то случайный бред.
Притащил с работы 4-канальный цифровой осциллограф, подключил на SPI XPT2046.
Точно - данные выдаются как угодно, без какой либо привязки к клоку. Отсюда и случайные координаты в итоге.
Начал копать даташит на XPT2046 - вроде всё совпадает.
На каком-то буржуйском форуме вычитал, что XPT2046 очень критична к частоте клока SPI.
Причем, в даташите ОШИБКА !!! Внутрений АЦП XPT2046 работает максимум на 125кГц. Но эта частота формируется внутри XPT2046 не делением (как в даташите написано), а УМНОЖЕНИЕМ частоты клока SPI.
Переписал функции чтения/записи по SPI с понижением частоты клока - о, чудо.
Тач работает идеально - при нажатии стилусом иногда +/- единица координаты прыгают.
А вот дальше пришел "ВЕЛИКИЙ ОБЛОМ" - при отключении осциллографа всё перестало работать.
Похоже, всё таки ITEAD Studio что-то с разводкой напартачили :(
Но, поскольку у меня останется только TFT, а плата с МК будет своя - я пока сильно не переживаю.
Оставлю на плате на SPI посадочные места под резисторы/конденсаторы и буду подбирать.
Вывод (предварительный) из вышесказанного - UTouch не работает с XPT2046, надо писать свою либу.
Если есть АРГУМЕНТИРОВАННЫЕ возражения (с примерами у кого работает) - буду рад услышать.