Go Down

Topic: 240x320 2.4" SPI TFT LCD Touch Panel ILI9341 5/3.3V (Read 20385 times) previous topic - next topic

know

Muchas gracias a los dos. Ya funciona, al final he añadido un integrado CD4050BE para cambiar la lógica de tensión de 5 a 3.3V como comentaba "TFTLCDCyg". Ahora toca la parte táctil de la pantalla que espero se me de mejor. Gracias y un saludo.

TFTLCDCyg

Que bien que ya lo hiciste funcionar.

La pantalla táctil la puedes manejar mediante la libreria Utouch, los 5 hilos del TFT basta con conectarlos en 5 pines digitales del arduino.

PD: no sé si también ellos deban ser conectados a otro CD4050BE ...

know

Pues en eso estoy. En este esquema parece que solo se utiliza un hilo (el pin8)?¿ incluye la libreria #include <Adafruit_STMPE610.h>

Perdon me corrijo ya veo que la STMPE610 es para una shield de adafruit.. 

TFTLCDCyg

El controlador de la táctil es el XPT2048. Se puede activar y calibrar con la librería Utouch

know

Pues ya he probado la librería Utouch y va correcta con la Mega 1280. Los pines para la conexión y la TTF que he usado son estos UTFT myGLCD(TFT01_24SP,51,52,5,4,6);, ahora me falta el touch, j_der lo que me ha costado salir del atolladero. Estoy investigando si los pines para la touch también tienen que pasar por un CD4050BE, si es así tendré que esperar unos días pues solo compre 1. Un saludo

know

Funciona directamente sin CD4050BE. Un saludo, ahora queda el proyecto por hacer pero esto es otro tema. Tambien queda la tarjeta SD pero no tengo en principio pensado usarla.

TFTLCDCyg

#21
Dec 05, 2014, 11:21 pm Last Edit: Dec 05, 2014, 11:22 pm by TFTLCDCyg
Que bien que has podido hacer funcionar tus fierros jejejeje y ya que nos habías aventado todos los tratos XD.

No hay que deseperarse, es mejor atacar el problema desde otra perspectiva. Igual dejé un rato el tema del lector SD.

PD: por la posición del lector SD del TFT, decidí anexar un lector microSD externo, de esta forma no tengo que tocar o mover la pantalla a cada rato. La pienso instalar en un soporte de acrílico y para la micro SD haré una ranura un lado de la pantalla.

know

Pues había echado las campanas al vuelo muy rápido, por que todavía no he conseguido calibrarla para que funcione con lo otros ejemplos.
La calibración me sales esto y he modificado el archivo UTouchCD.h

#define CAL_X 0x04110763UL
#define CAL_Y 0x00B89454UL
#define CAL_S 0x000EF13FUL

Pero lo puntos que se dibujan en pantalla parecen estar siempre fuera.

Me dices que el controlador de la táctil es el XPT2048, pero entiendo que no hay que modificar nada salvo el tipo de pantalla y las patillas de touch, asi por ejemplo;

UTFT myGLCD(TFT01_24SP,51,52,5,4,6);
UTouch  myTouch( 12, 11, 10, 9, 8);


He verificado la calibracion en la pagina http://henningkarlsen.com/electronics/t_cal_verify..
UTouch Calibration Data Verification


Displaytype   :   ElecFreaks - TFT01-2.4
Your CAL_X   :   0x041047B3UL
Your CAL_Y   :   0x00C5104FUL
Your CAL_S   :   0x000EF13FUL

Results:
• Orientation is correct...
• Display size parameters are correct...
• CAL_X data sequence is correct...
• CAL_X data is not in the expected range...
• CAL_Y data sequence is not correct...

TFTLCDCyg

#23
Dec 07, 2014, 06:32 am Last Edit: Dec 07, 2014, 06:36 am by TFTLCDCyg
La calibración debes hacerla con un lápiz táctil o algún bolígrafo que te permita tocar el centro de cada una de las 8 marcas que da el sketch de calibración.

Como has hecho, guarda los datos de calibración en el archivo UtouchCD, procurando dejar solo una tripleta de calibración. Si deseas conservar las previas tendrás que comentarlas, como en el ejemplo siguiente:

Code: [Select]
//HY32D  TFT-TÁCTIL 3.2"       ------   En el controlador Cyg
//#define CAL_X 0x001F0F40UL
//#define CAL_Y 0x00188E95UL
//#define CAL_S 0x000EF13FUL

// 24SPI TFT ILI9341 -Touch        -------- Rotación 1  
#define CAL_X 0x004D4E8AUL
#define CAL_Y 0x039280F9UL
#define CAL_S 0x000EF13FUL


Con el sketch que te dejo, se puede corroborar que el espacio visible de la pantalla TFT coincide con la pantalla táctil. Una buena calibración debería dar estos resultados cuando se toca cada esquina visible del TFT con orientación X>320, Y>240:

- Esquina superior izquierda: 0,0
- Esquina superior derecha: 319,0
- Esquina inferior izquierda: 0,239
- Esquina inferior derecha: 319,239

Code: [Select]
//Verificar XY en pantalla y puerto serie
#include <UTFT.h>
#include <UTouch.h>

//24SPI
  UTFT myGLCD(ILI9341_S5P,MOSI,SCK,10,NOTINUSE,42);
  UTouch  myTouch(12,11,9,8,7);  //  

extern uint8_t BigFont[];
int x, y;

void setup()
{
  Serial.begin(9600);
  
  myGLCD.InitLCD(LANDSCAPE);                  
  myGLCD.clrScr();                            
  myGLCD.fillScr(0,0,0);
  myGLCD.setFont(BigFont);  
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.setColor(0, 255, 0);

  myTouch.InitTouch();
  myTouch.setPrecision(PREC_HI);  
}

void loop()
{
  while (true)
  {
    if (myTouch.dataAvailable())
    {
      myTouch.read();
      x=myTouch.getX();
      y=myTouch.getY();

 // TFT-output
      myGLCD.print("x=       ", 50, 100);
      myGLCD.printNumI(x, 85, 100);
      myGLCD.print("y=       ", 185, 100);  
      myGLCD.printNumI(y, 220, 100);
            
// Serial-output            
      Serial.print("x= ");
      Serial.print(x);    
      Serial.print("   y= ");            
      Serial.print(y);  
      Serial.println("   ");    

    }
  }
}


Te dejo la calibración que obtuve de las tres pantallas de 2.4 que tengo:

//Táctil 24SPI1
#define CAL_X 0x03CF40D0UL
#define CAL_Y 0x0033CE96UL
#define CAL_S 0x000EF13FUL

//Táctil 24SPI2
#define CAL_X 0x03BCC0B5UL
#define CAL_Y 0x00290E63UL
#define CAL_S 0x000EF13FUL

//Táctil 24SPI3
#define CAL_X 0x03AE810CUL
#define CAL_Y 0x00444E1AUL
#define CAL_S 0x000EF13FUL

A ver si coincide alguna con tu pantalla táctil

know

Pues no lo consigo y siento pedir ayuda otra vez...
Como no sabia si el problema estaba en las tensiones he comprado otro CD4050BE y lo he intercalado, en las señales del Touch panel, pero en este caso se queda como si estuviera pulsado siempre por lo que creo que no es este el problema.

Con todas las calibraciones que me has dejado  no funciona y con  muchas de estas consigo X=-1 y=-1, solo en alguna de las que he guardado he conseguido datos aleatorios y entre ellos otra vez los -1, -1.

veo que en la touch pone 2408-SZ que entiendo que es el tipo de touch screen que tengo en la TFT. He mirado la placa y el chip es el XPT2046 1419.

Puedes decirme otro software para probarlo que no se UTF.

Un saludo y disculpa por pedirte ayudan tantas veces. 

TFTLCDCyg

#25
Dec 10, 2014, 09:09 am Last Edit: Dec 10, 2014, 09:17 am by TFTLCDCyg
En cada sketch se me ocurre que podrías modificar la precisión de la pantalla táctil. La librería utouch tiene 4 tipos

Code: [Select]
#define PREC_LOW 1
#define PREC_MEDIUM 2
#define PREC_HI 3
#define PREC_EXTREME 4


En el área del setup de cada sketch en el que se activa la táctil, está la siguiente instrucción:

Code: [Select]
 myTouch.InitTouch();
  myTouch.setPrecision(PREC_HI);  


En el Arduino Due esa precisión no causa problemas, quizás en el MEGA habría definirla como:

Code: [Select]
 myTouch.InitTouch();
  myTouch.setPrecision(PREC_MEDIUM);  


Podrías intentar por allí. Intenta esas modificaciones con y sin el chip CD4050 a ver que resultados obtienes.

No conozco otra librería que permita acceder al XPT2048.

PD: hice pruebas con el MEGA, el shield TFT para MEGA y parece que la táctil funciona bien, te iba a sugerir la posibilidad de que consigas un shield para MEGA, pero cuesta casi lo mismo que un arduino Due clon...

know

Gracias lo he probado y no funciona. El chip se llama XPT2046, creo que es lo que leo en la placa.?


TFTLCDCyg

#27
Dec 10, 2014, 11:57 pm Last Edit: Dec 11, 2014, 12:04 am by TFTLCDCyg
Si es el 2046... perdón, mi error.




Reinstalé todo en el shield TFT-MEGA. Calibré con la pantalla con ID = 2408


Probé el ejemplo de quick paint en la otra pantalla con ID = 2408-SZ


Revisa bien el cableado, debe haber por allí alguna falla que no has visto y la definición de pines en los skecth en los que uses la pantalla táctil.

know

Hola TFTLCDCyg;

Pedirte un favor si puedes y por descartar, la pantalla funciona con mega y una adaptador de tensión CD4050BE, en mi caso compre un TC4050BP de Toshiba que es igual, la TFT veo que la tienes conectada a la shield de eleckfreaks, seria posible que realices el montaje que tengo yo y decirme si funciona, en algún post anterior creo que decías que tenias un CD4050BE.

Las conexiones que tengo para la pantalla son


y el touch con CD4050BE no funciona, y sin este no hay forma de calibrarlo, de todas formas he conectado

UTouch  myTouch( 12, 11, 10, 9, 8 );// (T_CLK, T_CS, T_DIN, T_DOUT, T_IRQ).

El vendedor me ha enviado unas librerías pero son para C51.

Es increíble de todas formas que no haya otra solución que conectar la pantalla con una Shield.

Un saludo y muchas gracias.

TFTLCDCyg

#29
Dec 12, 2014, 05:45 am Last Edit: Dec 12, 2014, 06:19 am by TFTLCDCyg
No he encontrado el CD4050... por allí aparecerá algún día XD.  Bueno ese buffer no es otra cosa que un convertidor de 5 a 3.3V, así que lo he sustituído por 5 divisores de voltaje. Acá hay más detalles respecto al divisor de voltaje

Para construir cada divisor de voltaje, usé una resistencia de 1K en serie con la linea que viene del MEGA, en el extremo de esta resistencia, conecté una segunda resistencia de 2K. El extremo de la segunda resistencia lo conecté a GND.

La unión entre la resistencia de 1K con la de 2K, la conecté a cada pin correspondiente en el TFT

Code: [Select]
MEGA            TFT 24SPI
8                  CS      (Divisor de voltaje)
9                  RESET   (Divisor de voltaje)
10                 D/C     (Divisor de voltaje)
51                 MOSI    (Divisor de voltaje)
52                 SCK     (Divisor de voltaje)
3.3V               VCC
3.3V               LED
GND                GND

Touch panel
6                   T_CLK
5                   T_CS
4                   T_DIN
3                   T_DOUT
2                   T_IRQ

El CD4050 casero...

De esta forma creo que tengo casi las mismas condiciones del TFT y de la pantalla táctil, como si tuviera el CD4050 conectado.

La pantalla táctil la conecté directo al MEGA, dejando la precisión en HI y cruzando los dedos...








PD: revisa hilo por hilo, no sé que mas sugerirte, que no sea comprar el Arduino Due clon jejejeje.

Go Up