Main Site Documentation

Touchscreen problem


#1

Hi,

We are using a Fez Cobra module and a 7" display with touchscreen. The problem is that when the touchscreen is operated by finger it happens now and then that the position determined by Touch is completely wrong. This results in the activation of a button that was not pushed. It looks as if it has something to do with the pressure applied to the touchscreen.

Is this a known problem? Could it be the quality of the touchscreen? Are there any software (or other) solutions for this problem?

Peter


#2

Do you have calibrated the touch?

Here is an example: http://www.ghielectronics.com/downloads/FEZ/Cobra/LCD_Example_7_Inch.cs


#3

Chris,

Yes we have calibrated the touchscreen. It works fine when using a stylus or pen, but the problem arises when the screen is operated by finger.

Peter


#4

This is normal as the screen is resistive touch screen. You need to apply some direct force to get accurate reading. If you are thinking “iphone touch” then you need to use capacitive touch screen.


#5

Hi Gus,

I think you are right. We found the same problem with other touchscreens. Do you know of any ‘intelligent’ software algorithms to solve or lessen the problem?

Peter


#6

One way is to make objects on your screen larger.


#7

HI Gus,

I think bigger buttons etc won’t be a solution because the faulty positions occur anywhere on the screen. What I need is some sort of pressure threshold. Do you know if ist’s possible to measure the applied pressure?

Peter


#8

Idd you must measure the pressure. But you’ll need 3 AD converters for that. Right now, the LCD connector on the Cobra uses 2 ADC’s for the touch panel. So it would need rewiring and own touchscreen implementation.


#9

Dank u Wouter,

I’m just reading a datasheet from Atmel (AVR341.pdf). It’s giving me the impression that it might be possible to do a pressure measument without extra wiring.

Peter


#10

X is measured by putting a voltage over XR / XL and measure on YU (AD1)

Y is measured by putting a voltage over YU / YD and measure on XL (AD0)

In datasheet of f.e. TSC2046 (Table 2, page 10 of http://focus.ti.com/lit/ds/symlink/tsc2046.pdf ) you’ll find how they measure a Z1 and Z2 value by putting a voltage acros XR / YU and measure on XL and on YD. YD is not connected to a ADC on the Cobra, so impossible to measure.

With the X, Z1 and Z2 value, you can calculate the pressure. (see http://www.electro-tech-online.com/microcontrollers/92141-tsc2046-controller-nds-touchscreen.html )


if (locationZ1)  //Z1 will always be zero on no touch.
{
          pressure = 40 * locationX;
          pressure /= 4096;
          pressure *= locationZ2 - locationZ1;
          pressure /= locationZ1;
 }
 else
          pressure = 0;


#11

Thank you Wouter for the quick response. I think I have some studying to do.
I’m a relative newbe to NetMF. Do you have some reference or example how to rewrite the touchscreen functionality.

Peter