Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Калибровка тачскрина ADS7846+ATmega128
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
I@COM
Доброго времени суток всем!

Господа помогите !!!!!!!!!!!
Как реализовать на асме калибровку тачскрина, тач-контролер ADS7846, дисплей 240x320 пишу на ассемблере, если есть такая возможность по делица примером.
Видал примеры на С но к сожалению не сильно понятно (так общая картина)



а может какие ссылки есть почитать ?
SergeyGrig
Применял тоже дисплей 240х320, но контроллер был другой - АД7843 (для резистивного 4-проводного). Но я думаю, что Ваш тоже дает коды по двум координатам в зависимости от нажатого места.
Делал упрощенный вариант по двум точкам по диагонали (в надежде, что ТС не сильно перекошен).
Цель калибровки: получить значения крайней левой и крайней правой точки (условно коорд.Х - 240 пикселей), и самой нижней и самой верхней точки (условно коорд.Y - 320 пикселей). По этим значениям также вычисляем ДельтаХ и ДельтаY. Эти значения в режиме Калибровки нужно получить, нажимая на ТС в двух углах - левом нижнем и правом верхнем. Но сделать это сложно, поэтому точки нажатия лучше сместить от углов пикселей на 8 или 16. Ну и сделать пересчет для коррекции этого сдвига.
А в рабочем режиме, чтобы получить значения точки нажатия в пикселях, решается пропорция: (Хнажатое - Хлевое) / ДельтаХ = Хпиксель / 240. Аналогично для Y со своими значениями.
Ну, может нужна еще какая-то поправка, что считать нулем по координатам.
I@COM
AD7843, ADS7843 они одинаковы только производитель разный, ADS7846 это доработанная ADS7843.
Спасибо!
буду думать
а вы не моглибы примером поделица java script:add_smilie(":unsure:","smid_6")
SergeyGrig
Если еще актуально.

Я сейчас условно-безработный, поэтому до кода не доберусь. Но вот нашел листочек с вычислением формул.
Ход такой:

допустим по коорд. Х - 240 пикселей. Крестики, в которые будем тыкать при калибровке, сдвинули на 16 пикселей от углов. Измеренные значения: Х1 - левый угол (меньшее значение), Х2 - правый угол (большее значение).
Значение, которое надо получить: Хлевый - значение именно левого угла по Х.
Итак, значение на один пиксель V1 будет равно: V1 = (Х2 - Х1) / (240 - 2 * 16). Значение на 16 сдвинутых пикселей равно: V16 = V1 * 16.

Хлевый = Х1 - V16 = Х1 - (Х2 - Х1) * 16 / (240 - 2 * 16) = ........ = (Х1 * N1 - Х2 * 8) / N2 ,

где N1 = 120 -16 + 8 =112, a N2 = 120 - 16 = 104.

Аналогично для Хправый, Yлевый, Yправый, а также ДельтаХ и Дельта Y.

-------------
Жаль, что Киев не в Москве, а то подскочил бы laughing.gif .
I@COM
Актуально 100%
Работа идёт полным ходом
---------------------------------
Да точно жаль что Москва не в Киеве а то бы встретились cheers.gif
DVF
Цитата(SergeyGrig @ Sep 23 2010, 15:18) *
Аналогично для Хправый, Yлевый, Yправый, а также ДельтаХ и Дельта Y.

А дальше? Как применять поправочные коэффициенты? Каков алгоритм?
SasaVitebsk
Почитайте эту ветку - там есть ссылка на документ.
http://electronix.ru/forum/index.php?showt...%EA%F0%E8%ED%E0
SergeyGrig
Цитата
А дальше? Как применять поправочные коэффициенты? Каков алгоритм?


А дальше:

Хлевый и прочие - это в значениях контроллера. Нам нужно в пикселях. Для этого составляем пропорцию:

(Х измер - Х левый) / Х пиксель = ДельтаХ / 240

Отсюда находим Х пиксель - значение нажатой (измеренной) точки в пикселях относительно начала отсчета ( Х левый).

Кто такие поправочные коэффициенты? - это если есть перекос тачскрина? Тогда нужно брать больше точек и усложнять вычисления. У меня вариант упрощенный.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.