Go Down

Topic: ITDB02 5.0 Y UTouch (Read 3 times) previous topic - next topic

Marcial

Buenas, alguien me sabría decir si la libreria UTouch.h sirve para la ITDB02 5.0'' de itead studio
o existe alguna otra valida.

muchas gracias de antemano

Marcial

Tarde, pero lo encontré ...

Hoy conseguí encender la pantalla, pero la parte tactil sigue sin ir bien.

Tengo un mega con este shield :  http://www.aqualedsource.com/shop/product_info.php?cPath=1_5&products_id=32
y esta pantalla : http://www.itead-europe.com/index.php/itead-studio-category/display/itdb02-5-0.html

Le cargue un codigo que deveria pintar un pixel en la coordenada que tocas, y solo pinta pixeles en el cuarto superior derecho de la pantalla. Me da la impresion que la pantalla tiene mas pixeles que el sensor tactil, eso es normal?

Code: [Select]

#include <UTFT.h>                                                           // Pantalla TFF
#include <UTouch.h>                                                         // Tactil

extern uint8_t SmallFont[];                                                 // Fuente Pequeña



UTFT    Pantalla(ITDB50,38,39,40,41);


UTouch  Tactil(62,63,64,65,66);


int X,Y;



void setup()
{
 Pantalla.InitLCD(LANDSCAPE);                                             // Inicializar pantyalla LCD
 
 Pantalla.clrScr();                                                       // Borra la pantalla
 Tactil.InitTouch(LANDSCAPE);                                             // Inicializar tactil
 Tactil.setPrecision(PREC_MEDIUM);  
 //Tactil.setPrecision(PREC_HI);

 Pantalla.setFont(SmallFont);                                             // Fuente pequeña
 Pantalla.setColor(0,0,255);                                              // Color azul
 Pantalla.setBackColor(0,0,0);                                            // Fondo negro
 Pantalla.drawRoundRect (0,0,799,479);                                      

}

void loop()
{
 Tactil.read();                                                          // Obtener cCoordenada pulsada
 X=Tactil.getX();                                                        // Coordenada x
 Y=Tactil.getY();                                                        // Coordenada y
 if (X>-1)
 {
   Pantalla.print("   ",100,100);
   Pantalla.drawPixel(Y,X);
   Pantalla.printNumI(X,100,100);
 }
}


Marcial

La pantalla funciona correctamente, pero el sensor tactil no coinciden las coordenadas que lee con las reales.

saque una foto de la pantalla, para intentar explicarme mejor. El programa que le cargue pone un pixel en la coordenada que recibe el sensor tactil, y pasando por el borde de la pantalla esto es lo que aparece:

https://www.dropbox.com/sc/jeqcbc7bejmiqf0/SPF_G6BuJ0

Nadie tiene idea de lo que puede estar pasando?
Ya me empiezo a preocupar   =(


noter

#3
Nov 28, 2013, 10:10 pm Last Edit: Nov 28, 2013, 10:16 pm by noter Reason: 1
Hola.
Como suelo comenzar casi todos mis post, reitero que no soy muy docto en hardware, pero entiendo que, efectivamente no tienen por qué coincidir las coordenadas de la pantalla con las del sensor táctil, pues son al fin y al cabo dispositivos independientes. Por ello muchos dispositivos que usan pantalla táctil solían tener una aplicación para calibración (ahora no suele ser tan visible, supongo que porque habrá mejorado la tecnología en ese aspecto y vienen mejor colocadas).
La solución, supongo que será mapear por software esas coordenadas respecto a las de la pantalla (función map).

Marcial

Buenas noter, y muchas gracias por tu respuesta  (la primera en tres meses  =( )

Creo que el tema tiene algo que ver con la calibración de la misma, ya intente mapear, y el resultado me desconcertó mas todavia

Pantalla X,Y                     :  0,0     -     800,480
Sensor táctil  X,Y            :  1,1        -    239,316

La pantalla esta configurada con LANDSCAPE, y el sensor táctil también, aun que da la impresión, que el sensor esta en vertical, y sobre la escala no te quiero ni contar.

He probado a calibrarla,  y si uso los valores que me da la calibración , entonces el sensor táctil da unos valores ilogicos

noter

Lo primero, deberías tener claro qué coordenada del táctil correspondería a qué coordenada de la pantalla. Después, deberás mapear las coordenadas obtenidas en el táctil a los valores de la pantalla. Puede darse el caso, incluso, de que las coordenadas estén intercambiadas o crezcan en sentidos opuestos.
¿Si trazas una diagonal desde arriba-izquierda hasta abajo-derecha, en la pantalla se va dibujando en la misma dirección y sentido?
Si fuera así, tendrías que obtener la coordenada de pantalla más o menos así, partiendo de tus números:

pantallax=map(x,1,239,0,800);
pantallay=map(y,1,316,0,480);

Si la diagonal se dibuja siguiendo otra dirección, habrá que intercambiar coordenadas de los mapeos, o tal vez cambiar la configuración del táctil a vertical, en lugar de LANDSCAPE.


Marcial

Tengo el montaje en la oficina, el lunes pruebo y te cuento.

Las coordenadas crecen al sentido que deben,  conseguí hacer algo que medio funciona calculando el valor que deveria tener la coordenada, en vez del que tiene:   Y=800*Y/320; X=...

Con eso consigo que el pixel valla a donde tiene que ir, pero pierde un monton de precision.

noter

Exacto. La función map hace eso mismo. tal vez ganes algo de precisión, aunque donde no hay no se puede sacar. Si tu touch tiene 239 puntos de ancho y la pantalla 800, pues digamos que cada punto en el táctil abarcará unos 4 pixels de la pantalla. Lo que me resulta curioso es que en vertical tenga más resolución, pues serían 316 por 480, es decir, casi un pixel de pantalla por pixel táctil.

Marcial

Eso fue lo que mas me desconcertó,  da la impresión que el sensor táctil esta en vertical y la pantalla en apaisado, probé a  configurar la en vertical, pero el resultado fue nefasto.

Puede ser problema del shield de la pantalla?, no estoy usando la de itead

noter

Uff. Ahí entramos en terrenos farragosos para mí. No sabría contestarte  :~. Puede que la táctil sencillamente tenga más resolución en un eje que en el otro.

Marcial

Otra posibilidad, el calibrado.
He intentado calibrarlo, pero al introducir los valores que da el programa de calibrado en el fichero utuch.cd  el sensor deja de dar valores coherentes, es posible que haya que cambiar algo en el código para adaptarlo 800x480 o de vertical a horizontal o algo asi, no investigue nada al respecto.

Tengo un proyecto en mente que necesita una pantalla de 7¨,  e la de 5 tiene la misma resolución, as que con esta (que me han prestado)  puedo ir probando ... en cuanto funcione, jejeje

Marcial

:smiley-sad-blue:

tras horas e intentos, ... eureca lo encontre.

Esto ha sido un cumulo de demostraciones de la ley de Murphi.

El único problema es que la pantalla no estaba bien calibrada, pero :

-Los pines de conexión no son los mismos que los de la tarjeta de itead studio
-El programa que entrega la libraría utuch  para calibrar,  HAY que indicar bien el modelo, y los pines.
-Hay que tener en cuenta, que las pantallas de  5" solo soportan landcape, y el programa de calibrar define la pantalla cono portrail (este fue mi principal error)
- y sobre todo...  (al que se ria lo denuncio) ... los valores que te da la pantalla no hay quien los lea, camiar lo para que los saque por el puerto serial, y la tontería mas gorda en el fichero UTouchCD.h, donde tienes que modificar los datos de calibracion, yo vi esto :

#define CAL_X 0x00378F66UL
#define CAL_Y 0x03C34155UL
#define CAL_S 0x000EF13FUL

Las letras UL no me parecían hexadecimal, así que las conserve ... MAL ECHO.

PD. Mi mas profundo agradecimiento al Sr. Noter, por sus desvelos.

noter

Enhorabuena por el logro.
Seguramente ya sabrás qué significa el sufijo ul y cuándo es necesario ponerlo.
( Hay que mirar el lado positivo de las cosas, incluso cuando nos han vuelto locos  :D)

Marcial

Te agradecería una aclaración al respecto, no se me ocurrió mirar que era es sufijo, solo probé a sacrlo  :smiley-red:

Mi nanoconocimiento de C es  escaso :smiley-mr-green:, cuando yo estudie informática (años aquellos en que las ruedas eran cuadradas) aun que C ya existía, yo di informática de gestión , esto es cobol, dbase,foxbase,sql y a capricho basic, y nociones elementales de ensamblador.

Y a mis años me empeñe en aprender c, ... y consigue sorprenderme a diario.

noter

¡Espera un momento!
Creí que el error se había producido precisamente por lo contrario, es decir, por quitarlo. El sufijo UL significa que estás definiendo un unsigned long.
No sé si finalmente suprimirlo ha sido parte de la solución o, sencillamente, no ha influido (al no ser los números mayores a 0x0FFFFFFF); pero me cuesta creer que quien escribiera el código de la librería no tuviera claro si esas constantes deben llevar o no signo.

Go Up