Калібрації екрану потрібна для того, щоб значення координат сенсорного екрану збігалися зі значеннями координат LCD. Можна виконати прості математичні операції і більш-менш привести значення у відповідність. Але це не є точно, а ще кожен раз доведеться міняти програму під окреме утройство. А якщо сенсорний екран приклеєний з перекосом, тоді тут простими операціями не впоратися.
Алгоритм роботи при роботі з сенсорним екраном простий:
1. Для отримання координат з контролера сенсорного екрану (Xt, Yt)
2. Приведення координат за допомогою рівнянь (Xd, Yd)
Коефіцієнти A, B, C, D, E, F потрібно вирахувати за допомогою функції калібрації. Будемо вираховувати за трьома точкам.
Ставимо по черзі 3 точки як показано на малюнку і зберігаємо отримані координати сенсорного екрану. Важливо виводити точки на екран по черзі, щоб користувач не переплутав.
Після того, як у нас є координати дисплея і сенсорного екрану для трьох точок, можна вирахувати коефіцієнти калібрації.
Після вираховування координати можна зберегти в пам'ять (на жаль, у STM32F103VE немає EEPROM) і використовувати після виключення, а калібрації робити тільки коли це потрібно.
Тепер програма (багато коду):
RESCALE_FACTOR потрібен, щоб не зберігати коефіцієнти у вигляді числа double.
Тепер калібраціонние коефіцієнти в пам'яті, виконуємо обчислення реальних координат за допомогою функції:
Отримуємо реальні координати дисплея і можемо відобразити у вигляді пікселя або кола.
Дякуємо за увагу.
Якщо кому потрібен повний архів з проектом, пишіть в личку.