Тачскрин. Перевернута координата Х
- Войдите на сайт для отправки комментариев
Всем привет.
Господа, помогите с вопросом. Пока еще только знакомлюсь с Ардуиной, потому мой вопрос может оказаться вполне нубским. Собственно: подключил 3.2” TFT LCD с тачскрином к arduino mega 2560 через TFT LCD Mega Shield V2.0. Загружаю пробный скетч из библиотеки с кнопками. Так вот, координата Х почему-то начинается с противоположенной стороны, т.е. если нажимаю кнопку с права, то нажимается кнопка слева и на оборот. По координате Y проблем нет. Просмотрел, на сколько это возможно шлейф, - вроде всё в порядке. По даташитам посмотрел и дисплей и шилд - один в один, единственное что нумерация самих пинов идет по разному. Даже задавал
UTouch myTouch(6,5,48,3,2);
вместо библиотечного
UTouch myTouch(6,5,4,3,2);
результата нет. Подскажите в чем тут дело?
Без шилда не пробовали подключать? (если напряжение питания на TFT и ардуине совпадает)
Еще попробуйте из examples запустить UTouch_Calibration и сравнить калибровочные коэффициенты со стандартными
(еще можно допустить, что сам тач наклеили не той стороной... но сомнительно)
UTouch_Calibration запускал. Поправочные коэффициенты изменил в нужной библиотеке. Результат тот же. Есть еще у кого подсказки?
И при калибровке он все правильно распознал, а на кнопках его поведение изменилось на противоположное?
Если отправлять координаты нажатий на Serial, он их правильно (в абсолютных цифрах) выдает?
И при калибровке он все правильно распознал, а на кнопках его поведение изменилось на противоположное?
да. Но тут "правильно распозновал" тоже получается не совсем верно. Куда не ткни - запоминается и выдается поправочный коэффициент...
Если отправлять координаты нажатий на Serial, он их правильно (в абсолютных цифрах) выдает?
Подскажите, пожалуйста, как это сделать. У меня чёт не совсем получается
это дисплей
это шилд для дисплея
единственное в чем разница это нумерация пинов, хотя функции пинов правильны
Вот что-то типа такого:
Скорость COM-порта выставлена на 9600 (но можно поставить и больше).
(Проверить скетч не на чем, так что могут быть ошибки)
Вот это действительно странно.
А вы точно не путаете режимы Portrait и Landscape? По умолчанию тач будет работать в Landscape. А если дисплей работает в Portrait, а тач в Landscape, то примерно такая ерунда и будет
это из библиотеки дисплея...
Есть еще варианты? Кто-нибудь! Неужели никто не сталкивался?
Делаем так: располагаете дисплей в LANDSCAPE (согласно картинке) и повторяете тест еще раз.
все три раза так и делал
Странно. Пока даже и не знаю, что сказать
Но такое "отзеркаливание" хорошо подходит к ситуации, когда дисплей находится в положении Portrait, но UTouch считает, что дисплей в Landscape
Если не лень, попробуйте повертеть дисплей на 90, 180, ... градусов и найти положение, когда x и y будут нормальными. Если такое положение найдется, то проблема с настройками
x = map ( x, 0, resX, resX, 0);
вот такой костыль есть)
А куда его вставлять, простите... Я не волшебник, я только учусь...(с)
при получении кординаты х
resX - сколько точек по горизонтали
x = map ( x, 0, resX, resX, 0);
вот такой костыль есть)
Безгранично вам благодарен. Всё заработало :)
странно это все... у меня точно такой же дисплей GEEE32 . правда без шильда, так проводками его присобачил ( не вижу смысла платить 10 баксов за кусок текстолита)... все нормально работает..
попробуйте его напрямую проводками присоединить.. без шильда.. ибо костыли конечно хорошо.. но они хряпают процесорное время.. а для меги и этого дисплея, время очень актуально... чуть с кодом затупил и начинается прыганья и дерганья :)
это из библиотеки дисплея...
Есть еще варианты? Кто-нибудь! Неужели никто не сталкивался?
судя вот по этому, у вас какая то не та библиотека :) гы гы
myTouch.InitTouch(); // обычная ориентация
myTouch.InitTouch(PORTRAIT); // вертикальная ориентация
библиотека правильная.
myTouch.InitTouch(); // обычная ориентация --- так прописано у меня в коде
библиотека правильная.
myTouch.InitTouch(); // обычная ориентация --- так прописано у меня в коде
значит шильд не правильный :)
соедините просто проводами и посмотрите что происходит
для меги2560 будет выглядеть так
тач
дисплей
x = map ( x, 0, resX, resX, 0);
вот такой костыль есть)
Ну тогда уж проще x = resX - x;
Быстрее, меньше и очевиднее.
Ну тогда уж проще x = resX - x;
Быстрее, меньше и очевиднее.
Мы не ищем легких путей и простых решений. мы создаем себе трудности, что бы потом их мужественно преодолевать и иметь повод для гордости!
Канечно проще.
А откуда библиотеку качали?
просто выглядит так что над вами кто то пошутил с библиотекой... технически там нечего перепутывать. да и замучаешся перепутывать. шлейф по другому припаять не получится
родная валяется тут
http://www.henningkarlsen.com/electronics/library.php?id=55
Именно тут библиотеку и брал.
На данном этапе, меня, как новичка, предложенный "кастыль" вполне устраивает. Наверняка, когда мой проект будет полностью готов, мне снова придется вернуться к этой проблеме, но пока я только обучаюсь и идея созревает в голове. Всем откликнувшимся большое спасибо. Мир не без добрых людей :)
Траблу с неправильными осями править в файле UTouch.cpp
Просто меняем touch_x_left и touch_x_right местами с У-осью соответственно также(если тоже перепутана).
Если у Вас дисплей не 3,2 то откалибровать программкой не выйдет, лажёвая она. Программулька сама использует свой же настроечный файл расчитанный на 3,2 диспелей при калибровке, соответственно выдать реальных результатов на разрешениях сильно отличающихся от 3,2 неможет, проверено.
У меня 4,3 после калибровки вообще нет ответа от тача.
Что сделал - прописал разрешение экрана жёстко там же
файл настроек калибровки стандартный
спасибо, тоже дельное предложение...
Это похоже явление принимает массовый характер.. у меня таже фигня, причем когда запускаешь тач и экран в одинаковых ориентациях координаты как-то совсем по левому считает. А вот когда в разных с инверсией по оси Х - то вполне приемлемо (с поправкой на размерность экрана конечно).
Экран ITDB02-3.2WD подключен через шилд
Напоролся на эту же проблему с таким же экраном. Почитал, подумал, откалибровал экран, прописал куда сказали, перекомпилировал скетч и вуаля, координаты стали как надо :).