Go Down

Topic: Algunos consejos para usar TFT´s (Read 68351 times) previous topic - next topic

arkarash

Perdón si te pareció fuera de lugar, sólo quería saber para el uso que iba a darle yo que pantallas de recomendaban. Pero ya he decidido, me he comprado una nextion y probaré a ver qué tal. Mi intención no era comprarme la mejor pantalla del mercado que es de lo que hablan la mayoría de hilos, ni de pantallas súper hd con buenas velocidades si no cogerme algo bueno, bonito y barato sin llegar a llenarme de papeles. Aumente volví a postear por hacer un Up al hilo que ya había cambiado a la página 2.

TFTLCDCyg

#196
Jul 09, 2018, 02:56 am Last Edit: Jul 09, 2018, 02:58 am by TFTLCDCyg
Ojalá y que cuando te llegue la pantalla que has optado por usar en tus proyectos, nos des a conocer tus impresiones, ya sea en este hilo o bien en un nuevo post en el foro; ya que a mas de un forero he visto que le interesan ese tipo de pantallas.

La idea es que sea más fácil para todos programar otro tipo de pantallas, nos ayudaría bastante a conocer otras alternativas; ya que igual he menospreciado la capacidad de esos TFT.
ft81xmania.com/comunidad/

arkarash

No dudes que lo haré TFTLCDyg, tus comentarios los he leído todos pero voy a muchos años luz de tus experimentos con TFT's. Espero que para lo que yo necesito que es muuuuy simple esta pantalla de el pego, estaba por pillarme una china de esas de 4€ hasta que leí todos los comentarios de líos de librerías y montones de fallos. Creo que eso es lo importante de esta comunidad, la experiencia conjunta y el no repetir errores.

lightcalamar

hasta que leí todos los comentarios de líos de librerías y montones de fallos. Creo que eso es lo importante de esta comunidad, la experiencia conjunta y el no repetir errores.
Por ello hemos escrito, para que no repetir errores.
A estos errores, hemos invertido mucho dinero para daros a conocer otros horizontes.

Por cierto, yo tengo una Nextion de 7 pulgadas, y de momento la tengo en el cajón(no para abandonarla) pero es una HMI sin futuro y ademas mas complicada de programar que una FT81x. te lo escribo, por que tengo de ambos tipos, y donde esten las FTDI, que guarden cola las demas para hacerles sombra


arkarash

Ya tengo la Nextion, de momento la experiencia es buena, con el software de Nextion he conseguido fácilmente crear una interfaz para mi botonera a base de imagenes PNG y sustitución de partes de la imagen al pulsar. Gracias a todos por los consejos, me han servido para encontrar una buena opción.

Sobre las pantallas FTDI, se por vuestros comentarios que son mucho mejores que las Nextion pero como ya dije necesitaba una pantalla simple y barata para hacer simplemente un teclado de clave de acceso. Vamos que no lo iba a sacar el jugo con gráfricas ni nada que mereciese la pena el gasto. Sin duda me las miraré para proyectos de más envergadura que tengan más interfaz gráfico.

emilts

Hola.

Antes de nada daros las gracias por compartir vuestra gran afición y horas invertidas en aclarar estos temas.

Soy Informático, desde hace muchos años, y al final el tiempo te enseña que lo mejor es utilizar estándares que utilice una mayoría para desarrollar productos y no morir en el intento.

Ahora tengo que hacer un proyecto con arduino, donde soy novato, para controlar emisiones de luz RGB parametrizando valores sencillos desde una pantalla TFT, en principio con controles estándar como botones, "slider-bar", cajas de texto, "scroll-bar", "progress-bar", etc.

La pregunta es, qué TFT táctil me aconsejáis que utilice en torno a 3" o mayor, dado que el tamaño no es problema, pero que me complique lo mínimo, que sea si es posible un shield, de arduino uno en principio, que tenga librerías de programación lo más extendidas y sencillas posible aunque potentes y que no de problemas.

Gracias

danielpaz88

#201
Jan 15, 2019, 10:19 pm Last Edit: Aug 25, 2020, 07:57 pm by surbyte Reason: Agregado de etiqueta para códigos/errores e imagen
Hola , muy bueno tu aporte. estoy teniendo problemas por que la pantalla está en blanco. EL programa es el siguiente, lo tomé de tu ejemplo TFT_Menu. El driver al parecer es ILI9341. ya no se que hacer he intentado de todo. es una pantalla tft con sd de 2.2" de 240x320.

Code: [Select]
#include "Adafruit_GFX.h"  
#include "Adafruit_TFTLCD.h"
#include "SD.h"              
#include "SPI.h"            
#include "TouchScreen.h"    

#define YP A1
#define XM A2
#define YM 7
#define XP 6

//Rotacion 3
short TS_MINX = 68; // Controla el final de eje X del lado derecho en rotacion 3
#define TS_MAXX 950  //Controla el inicio de eje X del lado izquierdo en rotacion 3  // no contenpla los botones prediseñados 1-318
short TS_MINY = 170; // inicio Eje  Y
#define TS_MAXY 890  //   fin Eje Y  
//Rotacion 3

#define MINPRESSURE 1
#define MAXPRESSURE 1000
// Instancia del panel tactil (Pin XP, YP, XM, YM, Resistencia del panel)
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 364);

#define LCD_CS A3  
#define LCD_CD A2  
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

#if defined __AVR_ATmega2560__
#define SD_SCK 13              
#define SD_MISO 12  
#define SD_MOSI 11
#endif

#define SD_CS 10  
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, A4);

#define BLACK   0x0000  
#define BLUE    0x001F  
#define RED     0xF800  
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
uint16_t  color;

int X, Y, Z;
int deltaTactil = 10 ; //ajuste tactil-x en botones de diseño, por el uso de iconos prediseñados la tactil es unos 10/12 px mas grande que el TFT

char imagesOnSDCard1[8][30]={"Foff.bmp","Fon.bmp","6oB.bmp","6oH.bmp","6oI.bmp","ico9.bmp","ico7.bmp","La1.bmp"};
unsigned char imagenSD1 = 1;
char TX[50];

//iconos prediseñados
///////acá yo los saque a propósito por que no los uso. aparte me daba error por que me decía que el programa era muy largo y me excedía de la capacidad, estoy usando Android 1.8.7

void setup()
{
tft.reset();
tft.begin(0x9325);
tft.fillScreen(0);
Serial.begin(9600);

#if defined __AVR_ATmega2560__              
if (!SD.begin(SD_CS, SD_MOSI, SD_MISO, SD_SCK ))
{
  tft.println(F("failed!"));  
  return;
}
#else
if (!SD.begin(SD_CS)) {
  tft.println(F("failed!"));
  return;
}
#endif
tft.setRotation(3);
//MenuP();
}

void loop(){
delay(1000);
 bmpDraw("6oB.bmp",140,220);        
  delay(2000);
  bmpDraw("6oH.bmp",170,220);   }





TFTLCDCyg

Hola.

Antes de nada daros las gracias por compartir vuestra gran afición y horas invertidas en aclarar estos temas.

Soy Informático, desde hace muchos años, y al final el tiempo te enseña que lo mejor es utilizar estándares que utilice una mayoría para desarrollar productos y no morir en el intento.

Ahora tengo que hacer un proyecto con arduino, donde soy novato, para controlar emisiones de luz RGB parametrizando valores sencillos desde una pantalla TFT, en principio con controles estándar como botones, "slider-bar", cajas de texto, "scroll-bar", "progress-bar", etc.

La pregunta es, qué TFT táctil me aconsejáis que utilice en torno a 3" o mayor, dado que el tamaño no es problema, pero que me complique lo mínimo, que sea si es posible un shield, de arduino uno en principio, que tenga librerías de programación lo más extendidas y sencillas posible aunque potentes y que no de problemas.

Gracias
Hace un tiempo que no pasaba por el post, espero que mi respuesta no llegue demasiado tarde.

Recientemente he visto una versión de 3.2" de pantallas SPI ILI9341 (320x248 px), es el tope en tamaño para ese controlador. Es de lo mejor en cuanto a si necesitas buena respuesta gráfica al manejar múltiples instrucciones.

Desafortunadamente la parte táctil deja mucho que desear ya que el chip no ha sido actualizado, se sigue empleando el XPT2046 o equivalente. Quizás por mantener el costo final del producto bajo o bien por un elevado stock de ese chip en las empresas que fabrican el TFT.

Existen pantallas un poco más grandes con chips ILI9488 de 3.5" (480x320 px), el formato es idéntico al de las ILI9341, usan el chip táctil XPT2046, sin embargo el controlador de pantalla es la actualización directa del chip ILI9341.

Ambas versiones son TFT´s relativamente grandes.

Si tu presupuesto te lo permite te recomendaría pantallas FT813 de 3.5" o de 4.3", NHD tiene pantallas de este tipo con doble conector: un cabezal de 20 pines y un zócalo para cable plano de 20 pines.

ft81xmania.com/comunidad/

TFTLCDCyg

Hola , muy bueno tu aporte. estoy teniendo problemas por que la pantalla está en blanco. EL programa es el siguiente, lo tomé de tu ejemplo TFT_Menu. El driver al parecer es ILI9341. ya no se que hacer he intentado de todo. es una pantalla tft con sd de 2.2" de 240x320...
Bueno primero que nada felicidades por intentar un proyecto diferente. Te prevengo: habrá varias conexiones fallidas, pero ya diste el primer paso.

Veo en la foto que has compartido, que usas un cableado bastante largo, procura que el tamaño total de cada hilo no supere los 15 cm.

Las resistencias deben estar conectadas en forma de divisor de voltaje 5V/3.3V para cada línea de control de la pantalla, excepto para VCC y GND. Si te es posible consigue un chip CD4050BE, te ahorrará dolores de cabeza.

La mejor librería que puedes usar es esta
ft81xmania.com/comunidad/

JOSEBERMUDEZ

Hola, soy jose y soy nievo en esto de las pantallas tft, a ver si podeis ayudarme porque ando muy perdido y nadie me hecha un cable, queria empezar por algo sencillo, encender y apagar un rele desde un icono el la pantalla tft. No se por donde empezar, os agradezco de antemano vuestra ayuda.

TFTLCDCyg

Hola, soy jose y soy nievo en esto de las pantallas tft, a ver si podeis ayudarme porque ando muy perdido y nadie me hecha un cable, queria empezar por algo sencillo, encender y apagar un rele desde un icono el la pantalla tft. No se por donde empezar, os agradezco de antemano vuestra ayuda.
Esto del hobby con arduino implica que inviertas parte de tus ahorros en las piezas que quieres usar y antes que nada soy muy respetuoso con ese tema. Para empezar, te podría recomendar 6 o 7 opciones de TFT, pero quizás terminarás por sustituir por algo mucho mejor, por eso antes de opinar al respecto, me gustaría precisar algunas ideas.

Como siempre he dicho, mis opiniones son imparciales respecto a los fabricantes: si me sirve un TFT lo usaré en el proyecto, sino, irá directo al cajón de cosas sin usar y no lo recomendaré más, simplemente para evitar dolores de cabeza.

Bajo esta premisa, me he topado con piezas que han resultado algo costosas, pero que no he vuelto a usar, porque el TFT luego de un tiempo de uso muestra alguno que otro defecto. Sin olvidar el tiempo invertido en la curva de aprendizaje de la librería de control; que en varias ocasiones me ha retrasado el proyecto principal.

Ahora bien, en tu comentario veo que quieres un TFT con panel táctil con capacidad para gestionar imágenes. En ese sentido es mejor que te alejes de los TFT con táctil resistivo, el tema de cableado, calibración y sensibilidad dan paso a muchos problemas.

Los TFT con táctil capacitivo son de lejos la mejor opción.

Desafortunadamente la tecnología capacitiva está poco documentada en arduino y el universo de pantallas está muy reducido. Además el costo de este tipo de pantallas supera com mucho los 3 o 4 USD de las pantallas resistivas.

El complemento al TFT que quieres es el manejo de imágenes. Aquí necesitarás un lector micro SD para el manejo de archivos; esto ayudará que tu código consuma poca memoria en la placa de control o MCU

Otro aspecto a considerar es un buen MCU: muchos pines y capacidad para gestionar con librerías todo el hardware que quieres en tu proyecto.

Verás en internet demasiados proyectos muy bien logrados, pero no todo lo que dicen está documentado, el trasfondo implica que el dueño del proyecto pasó infinidad de horas creando sus propias librerías y que no siempre están dispuestos a compartir, quizás porque tienen un negocio detrás que deben cuidar...

El formato de la pantalla es importante: es mejor usar pantallas con pocos hilos de control y con cableado corto hacia el MCU.
ft81xmania.com/comunidad/

TFTLCDCyg

#206
Aug 13, 2020, 05:23 am Last Edit: Aug 13, 2020, 05:31 am by TFTLCDCyg
Por varias razones y proyectos de trabajo me he alejado algún tiempo. Sin embargo he retomado algunos pendientes que dejé por falta de tiempo. No creo conveniente abrir un nuevo hilo, con la idea de que lo ya avanzado le sirva a los nuevos exploradores.

Menu simple en el TFT ILI9488 conectado a un teensy 4.x

En esta ocasión me centraré en la pantalla ILI9488 de 3.5" y su manejo con el teensy 4 o 4.1. La versión de pantalla será la SPI, por la comodidad de usar poco cableado; es similar físicamente a la versión SPI del chip ILI9341.

Para fines prácticos quiero usar la libreria ILI9488_t3, la libreria XPT2046_Touchscreen para el manejo del chip XPT2046, y para el manejo de imagenes BMP, me inclino por la libreria SdFat beta2, ya que con ella podemos usar el lector SDIO del teensy 4.x. No he visto ejemplos en la red con esta configuración; por lo aprendido en este tiempo con la librería SdFat beta, creo que es muy factible conseguir con algunos ajustes dentro del sketch acceder a la carga de imagenes BMP desde el lector SDIO. Tengo curiosidad por ver como se desmpeña.

Hasta ahora la libreria URTouch solo ha funcionado en el teensy 3.6, pero en el teensy 4.x no muestra progresos. He intentado varios ajustes pero sin resultados.

Componentes

- TFT ILI9488 3.5", SPI
- Teensy 4
- Lector de 4 bits externo conectado a los pads SDIO del teensy 4.
- MicroSD de 32 Gb
- PCB de doble cara de 15x10 cm
- Cabezales de 40 pines hembra
- Hilos provenientes de un cable plano de 40 pines, de aquellas interfaces para dispositivos PC-IDE de hace algunos años

PD: por el momento le dejo aquí ya que tengo que ir a conectarlo todo, construir el lector externo con un adaptador microSD-SD Kingston que vi por algún cajón acumulando pelusas y tomar algunas fotos del resultado
ft81xmania.com/comunidad/

TFTLCDCyg

#207
Aug 16, 2020, 10:05 am Last Edit: Aug 16, 2020, 10:10 am by TFTLCDCyg
Tras algunos intentos, por fin funciona el adaptador microSD-SD




El pinout es


Un acercamiento al teensy 4


Por fin he podido conectar la pantalla, se me fueron "los ojos" en la soldadura de cada pad del lector SDIO... toca hacer las primeras pruebas con la librería, pero ya es algo tarde en estos momentos, la dejaremos para mas tarde.





Hace unos meses hice las primeras pruebas, pero por alguna razón el adaptador previo daba algunos errores, posiblemente alguno de los pads del adaptador no estaba unido correctamente o quizás se dañó.
ft81xmania.com/comunidad/

TFTLCDCyg

¿Cómo es que debemos configurar SdFat beta?

Greiman recientemente actualizó la librería SdFat beta, para darle soporte al teensy 4. En esta placa podemos instalar un lector externo microSD en SPI1.



También podemos instalar un lector externo mediante conexionado de 4 bits; en este caso, usaremos los ajustes con el segundo conexionado.

Primero debemos descargar la librería SdFat beta del repositorio oficial. Podemos instalarla en la carpeta de librerías del core teensy, en esta ruta:
Code: [Select]
C:\arduino-1.8.13\hardware\teensy\avr\libraries

De esta forma, cuando hagamos referencia a la librería SdFat beta con la placa teensy 4, la primer librería que va a consultar es la que tiene en la carpeta de librerías del core, aunque en el núcleo de librerías del IDE de arduino, exista otra versión.

Una vez instalada la memoria microSD en el adaptador, hay que verificar que funcione con SdFat beta.



Para ello podemos usar directamente los ejemplos: SdInfo o bech.

SdInfo


bench


Tomando como base cualquiera de los ejemplos, podemos extraer las lineas que nos permitirán usar el lector SDIO.

En el encabezado hacemos referencia a la librería SdFat. Debemos considerar dos aspectos: el constructor y el iniciador de la tarjeta.

Hay varios constructores para llamar a la tarjeta microSD:

Code: [Select]
#if SD_FAT_TYPE == 0
SdFat sd;
File file;
#elif SD_FAT_TYPE == 1
SdFat32 sd;
File32 file;
#elif SD_FAT_TYPE == 2
SdExFat sd;
ExFile file;
#elif SD_FAT_TYPE == 3
SdFs sd;
FsFile file;


Cada uno puede manejar diferentes características y clases dentro de la librería
Code: [Select]
1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT

En los documentos de referencia de la librería, se detallan estos aspectos con alcances y limitaciones para cada familia de placas y tipos de memorias SD.

En este caso podemos usar este constructor:

Code: [Select]
SdFat sd;

Respecto al iniciador, la librería SdFat beta considera 4 opciones, dos para lector en modo SDIO y dos para lector en modo SPI

Code: [Select]
sd.begin(SdioConfig(FIFO_SDIO))
sd.begin(SdioConfig(DMA_SDIO))
sd.begin(SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(50)))
sd.begin(SdSpiConfig(SD_CS_PIN, SHARED_SPI, SD_SCK_MHZ(50)))


El ejemplo en el que podemos usar cada uno de estos iniciadores es: TeensySdioDemo. Estos son los resultados:

DMA_SDIO

totalMicros  43815939
yieldMicros  29389566

FIFO_SDIO

totalMicros  6623219
yieldMicros  335822

Entonces, el mejor iniciador que podemos usar es:

Code: [Select]
sd.begin(SdioConfig(FIFO_SDIO))

Combinando el constructor y el iniciador, podemos crear un ejemplo para verificar el funcionamiento de la tarjeta micro SD en el lector SDIO

Code: [Select]
#include "SdFat.h"

SdFat SD;

void setup() {
  Serial.begin(9600);
  while (!Serial){;}
 
  Serial.print("Initializing SDIO card...");
  if (!SD.begin(SdioConfig(FIFO_SDIO))) {
      Serial.println("failed!");
    return;
  }
  Serial.println("OK!");
}
void loop(){}




PD: toca el turno a la librería ILI9488_t3
ft81xmania.com/comunidad/

TFTLCDCyg

#209
Aug 25, 2020, 12:49 am Last Edit: Aug 25, 2020, 12:51 am by TFTLCDCyg
La librería ILI9488_t3

Esta librería está pensada para las placas teensy 4.x, con algunos ajustes menores puede funcionar con las placas teensy 3.6/.35/3.2 y la librería URTouch. Es posible usar un lector microSD en paralelo al cableado SPI de la pantalla. En el caso de las placas 4.x, no se puede usar el panel táctil mediante la librería URTouch. En las 3.x señaladas, si se puede usar.

Los tres elementos (lector microSD, TFT y panel táctil) podrían instalarse en el bus SPI1, sin embargo solo pueden funcionar dos de ellos al mismo tiempo, inhabilitando el tercero.

Como ya es posible usar la memoria microSD conectada en modo SDIO, podemos conectar el panel táctil y la pantalla a SPI1, mediante el siguiente cableado

Code: [Select]
Teensy 4    ILI9488
3V3             VCC
GND             GND
10               CS
8             RESET
9             DC/RS
11        SDI(MOSI)
13              CLK
3V3             LED
12        SDO(MISO)
13            T_CLK
5              T_CS
11            T_DIN
12             T_DO
2             T_IRQ



Las librerías ILI9488 y XPT2046_Touchscreen, vienen en el teensyduino, en este caso usaremos el 1.53 en el IDE 1.8.13.


Toca verificar el cableado de la pantalla, usando hilos cortos no tendremos sobresaltos:



Una vez instalado el complemento para el IDE de arduino, localizamos la placa teensy 4 y ubicamos el ejemplo spitftbitmap, que modificaremos para que funcione con SDIO y SdFat beta.


Por defecto el ejemplo llama a la librería SD para la carga de imágenes en la tarjeta microSD desde el lector SPI. Lo renombraremos como T4_spitftbitmap_a_SdFat


Usando lo aprendido en el ejemplo T4x_SdFat_test, llamaremos a SdFat beta, tanto el constructor como el iniciador:





Crucemos los dedos para que no salte algún error por allí...



Al parecer es lo único que debemos modificar para usar SdFat beta en lugar de SD para el manejo del lector microSD.

¡Ha resultado!


Ahora las imágenes bmp las podemos cargar usando el lector SDIO.

ft81xmania.com/comunidad/

Go Up