Pantalla FT800CB HY43B/50B HOWTO y Librería Gameduino2

Buenas.

He recibido recientemente esta pantalla basada en el chip FT800 comprada en esta tienda, lo cual aparte de su precio para iniciarme en este tipo de pantallas y todo dándole las gracias a TFTLCDCyg concretamente es esta;

,
pues bien, he estado toda la tarde de ayer intentando hacerla funcionar. Podría haber puesto como no un mensaje tipo;

"AYUDA NO ME FUNCIONA MI NUEVA PANTALLA" o este otro; "SOCORRO se apaga la pantalla"... pero por muy desesperado que esté uno, hay que tomar paciencia y calma. Lo habitual que no tenemos cuando en nuestras manos tenemos un nuevo "juguete"...

Rebuscando, buscando y mas búsquedas, al final logré la solución. En la pagina oficial de FTDI este enlace propone de como se tiene que conectar la pantalla sobre todo en modo de programación para la plataforma Arduino. Pues bien para esta pantalla concretamente no funciona... La pantalla se congela, se apaga y mas problemas. No funcionan los ejemplos de las librerías etc... como dije antes después de tener los nervios al 100% resulta que encontré una tienda, que contiene un blog donde explica como se hace correctamente.

Yo no sé polaco (es una web de Polonia) esta es la tienda donde pone enlaces de una "review" para lograr hacer funcionar esta pantalla.

Lo principal son las conexiones de la misma. Esta tiene que ser en caso de Arduino UNO;

** 5V ↔ 5V**
** GND ↔ GND**
** SCK ↔ D13**
** MISO ↔ D12**
** MOSI ↔ D11**
** INT ↔ D10**
** CS ↔ D9**
** PD ↔ D4**

No he averiguado en el caso de usar un Arduino MEGA, pero funcionando en el modelo UNO, solo es cuestión de probar. El tutorial de donde saqué la información es en este blog.

A todo esto después de compilar unos simples ejemplos de las librerías, la pantalla asombra y de que forma, es otro mundo dentro de Arduino. Y aunque sé que es muy complicado solo es cuestión de hacer bien las cosas he intentar aprender algo nuevo. Me aconsejo TFTLCDCyg otros modelos mas avanzados de pantallas con chip FTxxx, pero a priorí pensé mejor empezar por lo básico y poco a poco ir trabajando.

Espero si alguno de vosotros os decidís por esta pantalla deis con la solución que he escrito.

Saludos!

Por cierto me olvidé de un tema muy importante.

Para compilar las librerías se realiza con el IDE de Arduino 1.0.x, pues bien en el blog anteriormente descrito han modificado estas mismas la versión 1.4 por usarlas en IDE de Arduino 1.6.x donde funciona correctamente. Este es el enlace de la librería modificada.

Saludos! :slight_smile:

EDITO.

Para Arduino MEGA estos son los pines;

5V ↔ 5V
** GND ↔ GND**
** SCK ↔ D52**
** MISO ↔ D50**
** MOSI ↔ D51**
** INT ↔ D53**
** CS ↔ D9**
** PD ↔ D4**

Comprobado por mi.

Gracias por tu aporte amigazo!

:wink:

Añado mas información.
Aunque todos sepamos de como realizarlo, no esta mal explicarlo.
La configuración de los pines se pueden definir en el fichero llamado FT_VM800P43_50.h donde a nuestra elección se le pueden modificar e incluso añadir mas valores.

Esta pantalla viene sin lector SD, sin embargo en el fichero cabecera anterior está predefinido el pin para usar en los ejemplos. Hoy lo he comprobado y funciona correctamente. Dejo muy claro que no se pueden modificar los pines del BUS SPI que usa, de lo contrario no va a funciona la pantalla.

He aquí la sección modificable (por defecto);

//macros specific to FT800 hardware
/* Macros used for CS, PDN, INT pins for SPI - default values */
#define FT_CS_PIN 			9 
#define FT_PDN_PIN			4
#define FT_INT_PIN 			3
#define FT_DISPENABLE_PIN		7
#define FT_AUDIOENABLE_PIN	        1

//macros related to arduino plaform SPI
/* SPI clock frequency */
#define FT_SPI_CLK_FREQ_MIN		8*1000000
#define FT_SPI_CLK_FREQ_MAX		21*1000000

//macros specific to sdcard
#define FT_SD_CSPIN 			8


/* Hardware specific include files */
#include "hardware/FT800/FT800.h"
#include "libraries/FT_SD/FT_SD.h"
#include "libraries/FT_RTC/FT_RTC.h"
#include "libraries/FT_GC/FT_Transport_SPI/FT_Transport_SPI.h"
#include "libraries/FT_GC/FT_GC.h"
#include "libraries/FT_GC/FT800/FT800Impl.h"

Si encuentro mas información la escribiré.

Reúno mas información de esta pantalla para hacerla funcionar con la librería GD2 (Gameduino) me ha costado lo suyo me no tiene nada que ver esta pantalla con la librería Oficial y la librería GD2. No solo por el código resultante compilado, sino por la enorme complexidad de la Oficial, donde para realizar un pequeño proyecto usareis meses y meses enteros. Lo he comprobado que es muy pesada para intervenir en nuestro Arduino.

Estos son los pasos para conformar la pantalla y no morir en el intento de hacerla funcionar en librería GD2.

1/ POR (Power On Reset)

Necesitamos inicialmente realizar un al pin llamado PD_N (pin 12 del chip FT800 a nivel bajo (LOW))
Con esto realizamos un reset a todos los contadores para que inicien todos sincronamente dentro del chip en el primer encendido. Caso para la librería GD2 sin usar ninguna shields (placa de apoyo) se puede hacer de dos caminos diferentes;

  • Por Hardware
  • Por Software

Sea el camino que se elija funcionará igual de una forma u otra. se realiza de esta forma:

a) Por Hardware
Montar un red R+C desde VCCIO (3,3 voltios) con una resistencia de 47K y un condensador de 100K como esta captura donde la toma media de la misma RC al pin PD_N (o marcado como PD del conector.

b) Por Software
Usar este siguiente código

#define PDNPin 8
...

En el setup:
       pinMode(PDNPin, OUTPUT);
       digitalWrite(PDNPin, HIGH);  
       delay(20);
       digitalWrite(PDNPin, LOW);
       delay(20);
       digitalWrite(PDNPin, HIGH);
      delay(20);

Donde conectaremos el pin PD al pin 8 (pin digital de Arduino) (se puede definir en otro a elección) y con esta sencilla solución ahorrareis la resistencia y el condensador.

2/ Código "maestro" para vuestros proyectos.
Dejo el siguiente código maestro,para que no pierdan el tiempo a la hora de configurar correctamente esta pantalla en cualquier proyecto suyo quedando de esta forma (solo Arduino UNO y MEGA);

#include <EEPROM.h>
#include <SPI.h>
#include <GD2.h>

#define PDNPin 8                   // PIN DONDE VA EL PIN_DN

void setup(){

 
   pinMode(PDNPin, OUTPUT);
   digitalWrite(PDNPin, HIGH);  // INICIALMENTE EN ALTO
  
   delay(20);
   digitalWrite(PDNPin, LOW);  // REALIZAMOS EL POR EN BAJO AL PIN DN
   delay(20);                        // ESPAREMOS 20 MICROSEGUNDOS (Data pone 5ms)
   digitalWrite(PDNPin, HIGH);  // LO VOLVEMOS A PONER EN ALTO
   delay(20);
   GD.begin(3);
   GD.wr(REG_SWIZZLE, 0);   // PARA NO INVERTIR EL ROJO POR AZUL DE LA PANTALLA


}

void loop() {

   GD.ClearColorRGB(0xff0000);   // LA PANTALLA DE FONDO ROJO
   GD.Clear();
   GD.cmd_text(GD.w / 1, GD.h / 2, 31, OPT_CENTER, "TEXTO EN PANTALLA");
   GD.swap();
}

Averiguaré en Arduino DUE de que forma para ampliar en breve mas documentación.

3/ Trucos de resolución de pantalla.
He averiguado, de pendiendo de la instrucción en el setup, donde se pone GD.begin() a de ir de esta forma:

GD.begin();   -> PANTALLA BLANCA y no funciona nada en pantalla. Desvanecimiento y rayas.
GD.begin(1); funcional, pero baja resolución
GD.begin(2); funcional y Táctil
GD.begin(3); funciona, Táctil y gráficos a máxima resolución
No he probado mas por falta de tiempo...

4/ Solución inversión colores Rojo por Azul
He averiguado del porque con códigos de colores por ejemplo;

#ff0000

corresponde al color rojo y en la pantalla se presenta el color azul cuyo código es;

#0000ff

Como solución en el setup agregar esta instrucción;

GD.wr(REG_SWIZZLE, 0);

En el código maestro que puse anteriormente está detallado. Recordando que esta pantalla no tiene sonido ni lector de memorias SD, pero en breve lo realizaré. Toda esta información la pueden encontrar en este mensaje, desde aquí sepan que sin la documentación de @TFTLCDCyg no hubiese jamas funcionado esta pantalla, las gracias a el.

Hasta la próxima! :slight_smile:

Hola, he comprado una pantalla FT800 de la pagina que indicas, pero por mas que he intentado, no consigo que encienda, que se ilumine por lo menos, algún consejo o alguna actualización de la librería?

Saludos... Cesar

Hola Cesar.

Son fáciles de hacerlas funcionar cuando se tiene experiencia. Me costó lo suyo en mi día como a ti, pero veras que sencillo.

Tendrías que decirme que tipo de MCU estas usando y modelo , (Arduino, Teensy, etc.), los pines y donde los tienes conectados y si puede ser, realiza una captura de pantalla con tu MCU.
Este es el enlace de la librería adecuada es decir para pantallas con chip FT800Q.

Encontraras mas librerías en mi repositorio que hemos modificado mi amigo TFTLCDCyg y yo en la dirección; lightcalamar (Thomas) · GitHub pero son para pantallas con chip FT81xQ.

Te pongo una captura de la pantalla conectado al arduino, te comento los cables he leído que largos dan problemas, así que los tengo cortos, y como en la fotografía no se aprecia bien te comento como lo tengo conectado, cable amarillo es MISO y va al pin 50, cable verde es MOSI va al pin 51, cable azul es SCK va al pin 52, cable naranja CS va al pin 53, luego el pin PD he visto en el archivo GD.h que esta definido para el pin 7, y luego el rojo-negro los 5v de alimentación.
Por mas que he repasado todo, no quiere encender, estoy probando con el ejemplo HelloWord

Saludos... Cesar

Veo que estas conectando a VCC 3.3V, tengo entendido que esa pantalla es de 5V.

No esta conectado al de 5v, da la sensación, he probado ya con todos los pin que trae el arduino y con alimentación externa pero nada....

Efectivamente se usan cables cortos por problemas que da, sobre todo a la hora de poner un lector microSD.
Sin embargo para realizar pruebas usaremos cables protoboards de toda la vida;

Como se puede observar la distancia es un "poco grande" pero el funcionamiento es correcto.

He aquí el "Hello Wold" en pantalla FT800;

La alimentación para esta prueba se coge desde Arduino MEGA en los extremos correspondientes en la placa como la siguiente captura. El pin PD lo tengo definido en el pin 48.

Te adjunto la librería lista para funcionar sin que modifiques nada, solo cambia el pin PD de 7 a 48. Prueba y nos comentas si te funciona.

GD2.zip (707 KB)

Hola lightcalamar, tengo un problema para hacer funcionar el lector microsd con esta pantalla, lo he preguntado en otro hilo pero fué movido, quizá éste era el lugar correcto.

Es este:
https://forum.arduino.cc/index.php?topic=575494.0

Muchas gracias de antemano!

Buenas.
Con TFTLCDyg hemos avanzado muy mucho en desarollar la nueva libreria para usar el lector microSD.
Ten un poco de paciencia y te publicaré de como hacer funcionar correctamente.
Podrias poner una captura del modelo que usas? Tiene buffers?.

Saco un tiempo y te pondré unos ejemplos.
Saludos. :slight_smile: