Go Down

Topic: Ayuda con 3.2 LCD MODULE ILI9341 16 bits (Read 4567 times) previous topic - next topic

Pmarcos

May 29, 2016, 10:23 pm Last Edit: May 30, 2016, 02:09 pm by Pmarcos
Buenas noches, dispongo de una pantalla de 3.2" touch TFT LCD color screen module 240X320 con el controlador ILI9341 con una PCB de 34 Pines

 -  http://www.wayengineer.com/index.php?main_page=product_info&products_id=6334#.V0tNYeRFZVZ  



he intentado conectarla a un arduino mega y a un Due, sin conseguir que funcione, unicamente se pone la pantalla blanca.

las conexiones que he utilizado son:

 BL CTR(pin23) -> 3.3V
 VCC -> 3.3V
 RD(pin4) -> 3.3V
 GND -> GND
 DB1~DB8 -> pin D37~D30
 DB10~DB17 -> pin D22~D29
 RS(pin2) -> D38
 WR(pin3) -> D39
 LCD_CS(pin1) -> D40
 RSET(pin5)-> D41

He probado todas las librerías que he encontrado y no he conseguido que funcione ni uno solo de los ejemplos de las librerías, agradecería cualquier orientación sobre cual puede ser el problema.

saludos



surbyte

Te invito a que leas las normas del foro para que luego edites tu post y uses tags con el enlace.

Respondo:
Si en la librería no seleccionas el controlador JAMAS va a funcionar.
Debes ir al archivo extensión .h y comentar el controlador por defecto y seleccionar tu controlador ILI9341 240x320

TFTLCDCyg

#2
May 30, 2016, 06:36 am Last Edit: May 30, 2016, 06:47 am by TFTLCDCyg
A pesar de lo popular que es la libreria UTFT, no tiene habilitado el controlador para ILI9341 conectado a 16 bits; sin embargo el autor dejó dentro de la librería todo lo necesario para hacerla funcionar, solo es cosa de algunos minutos de prueba y error con la libreria.

En mi búsqueda del TFT ideal para arduino, modifiqué la libreria UTFT porque tengo una pantalla idéntica a la tuya, con 34 pines y quería ver como funcionaba, no trabaja nada mal, pero me decanté por la serie de chips FT8XX.

Por ese entonces, armé un shield para no lidiar con los 34 cables. No usé el lector SD de la pantalla, ya que comparte hilos con la pantalla táctil, así que instalé un lector microSD adicional.

UTFT modificada

Constructores:
Code: [Select]
UTFT myGLCD(33,38,39,40,41);  // TFT ILI9341_16b
 o este otro
Code: [Select]
UTFT myGLCD(ILI9341_16,38,39,40,41);  // TFT ILI9341_16b

Ejemplo: Menu simple





PD: usa el Due para conectar directamente la pantalla. Para MEGA tienes que usar divisores de voltaje en todas las lineas, y te adelanto que para el MEGA no existe un shield para conectar pantallas de 34 pines.

Revisa hilo por hilo cuando la conectes al Due, con uno que esté dañado o no haga buen contacto, es suficiente para que la pantalla no responda

lightcalamar

Corroboro el mensaje de TFTLCDCyg porque yo tengo esta pantalla y funciona en mi DUE.

A todo ello puedo decir que si existe una shield para Arduino MEGA yo compré esta placa y funcionó bien.

Saludos.
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

Pmarcos

Muchas Gracias, pero sigo igual, he utilizado un Due con la pantalla, he revisado las conexiones y he cargado un programa para probar pin a pin que no hay problemas de conexión, he utilizado la librería que
ha dejado TFTLCDCyg con el mismo ejemplo y nada, la pantalla se sigue quedando en blanco aunque con poca intensidad, con el Mega se iluminaba mas.

No sé que es lo que estoy haciendo mal o si es que la pantalla no está bien.

A ver que se me ocurre

Muchas gracias

TFTLCDCyg

#5
May 30, 2016, 03:29 pm Last Edit: May 30, 2016, 03:36 pm by TFTLCDCyg
Revisa hilo por hilo, este tipo de pantallas son muy sensibles al fallo del cableado, con uno que no haga buen contacto, basta para que la pantalla no funcione. No hay otra forma. Batallé mucho para que funcionara con cables, por eso le construí un shield para el Due.



Brilla mas con el MEGA porque la estas alimentando con 5V!!!!, esta pantalla es de 3.3V. A ver si no te ha quedado listo un pisapapeles.

PD: el cabezal para TFT de 40 hilos, no tiene la misma distribución que el TFT de 34 hilos. El pin 1 del shield-MEGA es GND, el pin 1 del TFT de 34 pines (ILI9341 16 bits) es RS.

lightcalamar: quizás tu pantalla ILI9341 es la version de 40 hilos como esta: ILI9341 40 pines, que incluso la venden con el shield para MEGA. Traté de conseguir una de 40 pines,  pero con cargos de envío e impuestos, costaba lo mismo que un gameduino 2, que es muy superior en desempeño.

Pmarcos

Buenas de nuevo, gracias por las indicaciones TFTLCDCyg , he empezado desde el principio y he vuelto a conectar la pantalla, he desinstalado todas la librerías que tenía en el IDE y he instalado las que has puesto

- UTFT
- UTFT_SdRaw
- UTFT_tinyFAT


Tambien he instalado las librerías:
 
- Utouch "Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen"
- SdFat "Copyright (C) 2012 by William Greiman".

Pero sigo igual, puede que tengas razón y tenga un bonito pispapeles

¿Hay alguna forma de probar la pantalla sin utilizar librerías para saber si sigue viva?



Muchas Gracias

surbyte


Quote
¿Hay alguna forma de probar la pantalla sin utilizar librerías para saber si sigue viva?
Hay alguna forma de usar un vehículo sin ponerle nafta o gasolina como le digas? No.
La librería tiene/envia los comandos de bajo nivel que necesita tu controlador para funcionar.
Hacerlos a mano es para pocos.
ALgo que lo pruebe.. te sale mas barato comprar una nueva y ya que esta es tan rebuscada busca otro modelo y pidele consejo a TFT que sabe mucho del tema.

Pmarcos

Ok muchas gracias surbyte, seguiré tu consejo, aunque seguiré haciendo algunas pruebas voy a buscarme otro que por lo menos esté seguro de que funciona.


Gracias

surbyte

Por eso te digo.. pidele consejo a TFT. Se lo que te digo.

TFTLCDCyg

#10
May 31, 2016, 12:17 am Last Edit: May 31, 2016, 12:19 am by TFTLCDCyg
Mejor se no pudo haber dicho, gracias surbyte.

Para nosotros los aficionados solo está el camino de cablear, volver a cablear y recablear, hasta que dé señales de vida. Aunque no es mucho, 5V para dispositivos de 3.3V es demasiado. Espero que tu pantalla haya superado la prueba y que solo sea problema con algunos de los cables que estas usando.

Tenía como 4 o 5 bonitos TFT-pisapapeles que han quedado en la mesa de experimentos, por no tener una metodología clara para hacer pruebas, y otros mas que si han funcionado (y siguen funcionando), pero que no voy a usar, por lo que también caen en la categoría de pisapapeles o de recursos didácticos.

Mi sugerencia de toda la vida: FT800 + arduino Due, no es una combinación tan económica, como mi otra favorita: Due+ILI9341  conectada por SPI, pero en cuestiones gráficas supera con mucho a lo que puedes encontrar para arduino.

lightcalamar

#11
May 31, 2016, 09:16 am Last Edit: May 31, 2016, 09:24 am by lightcalamar
lightcalamar: quizás tu pantalla ILI9341 es la version de 40 hilos como esta: ILI9341 40 pines, que incluso la venden con el shield para MEGA. Traté de conseguir una de 40 pines,  pero con cargos de envío e impuestos, costaba lo mismo que un gameduino 2, que es muy superior en desempeño.
Ops!!! TFTLCDCyg es verdad tienes razón, mi TFT son de 40 pines... me equivoque.
Estoy tambien pensando en un hilo sobre una modificación tuya donde el constructor era,

Code: [Select]

UTFT    myGLCD(ILI9327,38,39,40,41);


es decir se subtitula ILI9341 por ILI9327, no sé si será el caso, todo caso que lo pruebe también. Me refiero a esto
Saludos.
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

TFTLCDCyg

#12
May 31, 2016, 12:54 pm Last Edit: May 31, 2016, 01:29 pm by TFTLCDCyg
Encontré que al usar el constructor ILI9327, en efecto se puede activar la pantalla ILI9341 a 16 bits, sin embargo, los pixeles de la pantalla parecen desplazarse y da la impresión de que solo funciona una parte de la pantalla. Hay que modificar los pixeles del ILI9327, para asignar el tamaño de la ILI9341 que corresponde a 320x240.

Vi que al dejar la pantalla ILI9341 conectada varias horas con esa modificación, se quedaba en blanco, y se debía desconectar y conectar de la alimentación.

Modifiqué la libreria UTFT, partiendo de la premisa que los registros de inicio de la pantalla conectada por s5p para el controlador ILI9341, tienen que ser idénticos para 16 bits. Ya no hice pruebas con s4p.

La libreria UTFT modificada, accede a los registros especificos del ILI9341, no los del ILI9327, como muchos sugieren que se conecte. Es decir, cuenta con un constructor específico para el ILI9341 a 16 bits, sin tocar nada del ILI9327.

Con la libreria modificada, se puede dejar conectada la pantalla el tiempo que se desee, sin correr el riesgo de que se quede en blanco.


PD: así termina la identificación de hardware, en el archivo UTFT.ccp de la libreria original UTFT

Code: [Select]
#ifndef DISABLE_CPLD
#include "tft_drivers/cpld/initlcd.h"
#endif
#ifndef DISABLE_HX8353C
#include "tft_drivers/hx8353c/initlcd.h"
#endif
}


Así termina el selector que modifiqué, incluso dejé una definición de pantalla con la que hice las pruebas

Code: [Select]
#ifndef DISABLE_CPLD
#include "tft_drivers/cpld/initlcd.h"
#endif
#ifndef DISABLE_HX8353C
#include "tft_drivers/hx8353c/initlcd.h"
#endif
#ifndef DISABLE_STARX
#include "tft_drivers/starx/initlcd.h"
#endif
#ifndef DISABLE_ILI9341_16
#include "tft_drivers/ili9341/16B/initlcd.h"
#endif
}


Ahora que lo pienso, tal vez los pantallazos blancos estaban relacionados con el cableado. Por cierto la libreria modificada, en efecto también puede funcionar con el ILI9327, dejé las modificaciones que se mencionan en la red.

David_82

Hola a todos,

Estoy en la misma situación que Pmarcos, compré el mismo LCD (maldita la hora que lo escogí) y estoy intentando seguir los pasos que indicais, pero tengo dudas (soy muy novato en programación).

He instalado la UTFT modificada que TFTLCDCyg proponía y he hecho el cableado de acuerdo a como indicó.

Ahora bien, cuando subo al arduino alguno de los ejemplos que vienen en la librería, lo único que cambio en el código ejemplo es:

UTFT myGLCD(ITDB32S,38,39,40,41); (Me imagino que esto es el constructor no? creo un objeto de la clase UTFT)

por:
UTFT myGLCD(33,38,39,40,41); 
UTFT myGLCD(ILI9341_16,38,39,40,41);
UTFT myGLCD(ILI9341_S4P ,38,39,40,41);
UTFT myGLCD(ILI9341_S5P ,38,39,40,41);

Desafortunadamente en cada intento la pantalla me sigue apareciendo en blanco.

Aunque tenga la librería UTFT modificada todavía debo ir al archivo .h o al .cpp a cambiar algo?

QUOTE
Debes ir al archivo extensión .h y comentar el controlador por defecto y seleccionar tu controlador ILI9341 240x320
UNQUOTE

Creo que es aquí donde me atasco.

Un saludo y gracias de antemano,

David


TFTLCDCyg

#14
Sep 28, 2016, 11:26 am Last Edit: Sep 28, 2016, 11:35 am by TFTLCDCyg
¿Qué placa arduino estás usando?

Al usar cables con tan solo uno que no sirva, basta para arruinar el funcionamiento del TFT. Un primer paso es verificar que cada hilo tenga continuidad, con el uso los conectores se debilitan y hay que ajustar las laminillas de contacto una por una.

El cableado directo que propongo usar solo funciona en arduino due, con la pantalla de 34 hilos. En el MEGA se deben usar divisores de voltaje o conversores 5V/3.3V.

Si tienes la fortuna de haber conseguido el TFT de 40 pines, basta con usar el shield en lugar del cableado y debería funcionar tanto en el MEGA o en el Due con el shield-TFT correspondiente.

PD: la versión mas reciente de la librería UTFT oficial, ya viene con el constructor para pantallas ILI9341 a 16 bits.

Go Up