Перейти к содержанию
    

Чем поточнее откалибровать емкостный сенсорный экран?

Хочется поточнее проверить координаты нажатий.

Палец имеет слишком больную площадь. Даже женский.

У соседа есть хомяк, но..... боюсь что эта идея не понравится ни соседу, ни хомяку.....

Что-нибудь способно оказывать на экран такое же воздействие, что и палец?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

44 минуты назад, murmur сказал:

Что-нибудь способно оказывать на экран такое же воздействие, что и палец?

Называется стилус для емкостных сенсоров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С одной стороны... уже не надо. Потыкав стало понятно, что  в калибровке, в общем-то он не нуждается, но.....

Я писала в соседней теме о проблемах с тачскрином, там оказался горелый контроллер.

Так вот, заказав новый, я с удивлением обнаружила, что он, с точно такой же маркировкой, выдает 800х480 точек. Я никогда не работала раньше с емкостными и  наивно полагала, что экран будет просто выдвавать квадратное множество 256х256, которое нужно просто отмасштабировать.

Так вот проблему то я решила - отмасштабировала 800х480 в нужные мне 1024х600.  Точность устраивает. Но все равно что-то гложет. Эти контроллеры (FT5316) их как-то перепрошивать надо под нужное разрешение? Ибо в даташите я не нашла, чтобы разрешение можно было настраивать при инициализации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 hours ago, murmur said:

Ибо в даташите я не нашла, чтобы разрешение можно было настраивать при инициализации

В appnote (Application Note for FT5x16 CTPM) есть некие регистры ID_G_MAX_X/ID_G_MAX_Y. Не оно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, esaulenka said:

В appnote (Application Note for FT5x16 CTPM) есть некие регистры ID_G_MAX_X/ID_G_MAX_Y. Не оно?

Похоже на то. Эти регистры кстати R/W. 

Но в библотеке, с которой я работаю (подсунутой мне калокубом) нет обращения к этим регистрам.

Может быть конечно 800х480 это згачение по умолчанию, но в даташите об этом ни слова. Хотя для других регистров дефолтные згаченря указаны.

Что ж, попробую пописАть в эти регистры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, murmur сказал:

Но в библотеке, с которой я работаю (подсунутой мне калокубом) нет обращения к этим регистрам.

Круто!:biggrin: А в этой библиотеке наверняка есть функции I2C_Write I2C_Read? Ну или подобные, так в чем проблема записать и прочитать по явно известным адресам?

4 часа назад, murmur сказал:

Может быть конечно 800х480 это згачение по умолчанию

Я же писал в той теме, что контроллеры могут быть прошиты на производстве значениями под конкретное стекло, которое может отличатся от вашего... Можно попробовать изменить это записью в регистры указанные выше, но не факт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, mantech said:

так в чем проблема записать и прочитать по явно известным адресам?

В чем проблема мой пост повнимательней почитать?

Попробую по иному объяснить.

В библиотеке, которая работает и выдает координаты 0-800, 0-480, нет обращения к указанным выше регистрам. А посему вызывает удивление, что тачскрин к моменту запуска уже настроен на эти параметры, а в даташите не сказано, что эти регистры имеют какое-либо значение по умолчанию.

Я разве писала, что мне проблема внести что-то в регистры? Просто удивила наблюдаемая картина.

Изменено пользователем murmur

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, murmur сказал:

В чем проблема мой пост повнимательней почитать?

А мой? "Я же писал в той теме, что контроллеры могут быть прошиты на производстве значениями под конкретное стекло" - какое это должно "вызывать удивление", если я прямо об этом писал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это какая-то, извините, жопа....

XH=TS_IO_Read(TS_I2C_ADDRESS,0x98);
	XL=TS_IO_Read(TS_I2C_ADDRESS,0x99);
	YH=TS_IO_Read(TS_I2C_ADDRESS,0x9A);
	YL=TS_IO_Read(TS_I2C_ADDRESS,0x9B);

выдает 0x04, 0x00 (1024) и 0x02, 0x58  (600).

При этом координаты в крайних точках экрана выдает 800 и 480.

Подтверждается практикой ибо приложение нормально работает только так

 *X = 1024-(coord*(1024/800));
 *Y = 600-(coord*(600/480));

Уточню, что у меня. Изначально на buydisplay.com был куплен дисплей 1024х600 с тачскрином в комплекте (комплектовал продавец).

Потом я заказала 800х480+тачскрин, продавец не только скомплектовал, но и наклеил. Перепаять контроллера я сочла более простым и безопасным делом, чем отдирать и переклеивать панели.

 

Может так быть, что отличаются не только контроллеры, но и сами дисплеи? То есть контроллер имея в регистрах 1024х600, будучи посажен на не подходящий дисплей, искренне думает что работает в другой "системе координат"?

Наверное это все таки не те регистры.

Ибо вот такое издевательство

TS_IO_Write(TS_I2C_ADDRESS,0x98,0x50);
	TS_IO_Write(TS_I2C_ADDRESS,0x99,0x50);
	TS_IO_Write(TS_I2C_ADDRESS,0x9A,0x50);
	TS_IO_Write(TS_I2C_ADDRESS,0x9B,0x50);
	
	XH=TS_IO_Read(TS_I2C_ADDRESS,0x98);
	XL=TS_IO_Read(TS_I2C_ADDRESS,0x99);
	YH=TS_IO_Read(TS_I2C_ADDRESS,0x9A);
	YL=TS_IO_Read(TS_I2C_ADDRESS,0x9B);

действительно записывает по указанным адресам 0x50, но на показаниях панели это не сказывается.

8 hours ago, mantech said:

А мой? "Я же писал в той теме, что контроллеры могут быть прошиты на производстве значениями под конкретное стекло" - какое это должно "вызывать удивление", если я прямо об этом писал?

Простите, в голову не пришло, что команда записи по i2C может писать в EEPROM.

То есть, я даже не рассчитывала на такое удобство.

Я думала, что регистры, с которыми работает эта команда, есть суть оперативная память и их нужно инициализировать каждый раз. А вот чтобы изменить какие-то базовые настройки нужно плясать с бубном.  Приятно было ошибиться.

Изменено пользователем murmur

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 минуту назад, murmur сказал:

что команда записи по i2C пишет в EEPROM.

Там все сложнее, МС по сути микроконтроллер со встроенной памятью программ, есть фирмварь, которая заливается во флеш или ром, не помню, что у него там, в ней кроме кода есть блок данных, которые при старте прописываются в регистры, поэтому в них не 0 или FF, а вполне осмысленные значения. По шине можно прописывать другие, а можно, если все устраивает,  и ничего не писать, как я делаю. Мне проще задать внешнее преобразование координат, чем раскуривать каждый новый контроллер на предмет того, чего они там понаписали по умолчанию. Как правило, точность подобных тачей не лучше +- 3пикселя, а значит, если не работать с дисплеями бешеного разрешения, обычного преобразования координат из 800х480 вполне хватает для дисплея 1366х768, а больше мне и не надо.:dirol:

37 минут назад, murmur сказал:

выдает 0x04, 0x00 (1024) и 0x02, 0x58  (600).

При этом координаты в крайних точках экрана выдает 800 и 480.

Контроллер емкостного тача - довольно сложное устройство, подразумеваю, там недостаточно изменить только эти 2 регистра, возможно кол-во сегментных линий не совпадает или внутренний преобразователь ошибается в расчетах, есть какие-то еще коэффициенты... Вообщем по этому и решил не связываться, о чем написал выше...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...