Librería gameduino 2 modificada para pantallas FT81X

Introducción

Gracias al trabajo (y desveladas) realizado en conjunto con el usuario lightcalamar, hemos podido hacer funcionar un par de pantallas de la familia FT81X: FT811 y FT813, con la librería creada por James Bowman para el gameduino 2.

Aun es un trabajo en progreso, faltan algunas características por explorar, pero la librería es 100 % funcional.

Hardware usado en la modificación

Pantallas con chip FTDI:

  • FT813, 5", de Riverdi
  • FT801, 4.3", de Riverdi
  • FT811, 5", de HotMCU
  • FT800, Shield Gameduino 2
  • FT800, FT843 de 4D Systems

Placas

  • Arduino shield de Riverdi

  • Breakout-20 de Riverdi

  • Arduino Due

  • Arduino MEGA

  • Lector microSD casero

  • Lector microSD lctech de 3.3V

Librería GD2 modificada

En el proceso no solo se trabajó con pantallas FT81X, también se usaron pantallas FT80X, hay algunos ajustes que aun deben hacerse para lograr unificar ambas familias en una librería.

En este link se pueden descargar las librerías modificadas. Una de ellas funciona para pantallas FT80X y la otra para pantallas FT81X.

Descarga de librerías GD2 modificadas FT80X y FT81X

18 Sep 2016: Adición de GD2-FT813 para Teensy 3.2 (ejemplos próximamente). Se empleó el breakboard20 de Riverdi para conectar el cable plano de la pantalla.

Primeras pruebas:

Adaptador para reducir fallas por el cableado:

20 Sep 2016: Homologación del conexionado para Teensy 3.2 con el de arduino.

23 Sep 2016: Nombrando GD3 a la librería modificada para pantallas FT81X, con el fin de que pueda coexistir en la carpeta de librerías de Arduino. Ajuste de ejemplos en GD3 proximamente.

  • La Librería GD2 funciona para pantallas de la familia FT80X: FT800, FT801, FT843 de 4D Systems (FT800)

  • La Librería GD3 funciona para pantallas de la familia FT81X: FT810, FT811, FT812, FT813.

  • Para que los ejemplos funcionen con GD3, debe modificarse el llamado de la librería por esta linea

#include <GD3.h>

Las librerías funcionan para pantallas diferentes al shield Gameduino 2, en las que se emplea el shield arduino de Riverdi o el breakout-20 de Riverdi o el adaptador genérico de pantallas de HotMCU o eventualmente aquel adaptador que esté disponible comercialmente (o hecho en casa).

  • El orden de conexionado puede modificarse dentro de la librerías, considerando cualquier pin equivalente al del shield gameduino 2(digital o analógico) disponible en el MCU arduino o Teensy 3.X seleccionado. La asignación actual se estableció para funcionar de forma directa con el shield arduino de Riverdi.

  • Las pantallas y adaptadores que se emplearon en el desarrollo del presente experimento, no cuentan con acelerómetro, por lo que las instrucciones referentes a este dispositivo, no son operativas.

  • MCU empleadas en el presente proyecto: Teensy 3.2 (TFTLCDCyg), Arduino Due (TFTLCDCyg), Arduino MEGA (lightcalamar).

  • Para el shield Gameduino 2 se deben emplear las librerías originales.

17 de noviembre 2016: corrección de ejemplos y ajustes menores en GD3.

  • Adición de ejemplos para usar assets en FT81X
  • Correcciones menores a la librería GD3
  • GD2 sin cambios
  • Corrección de ejemplos de la última versión de Septiembre
  • Se retiraron ejemplos de GD2 que no funcionan en GD3
  • Algunos ejemplos posiblemente no funcionen correctamente debido a que requieren del uso de hardware específico como el spectrum shield de Sparkfun y el RTC DS3231
  • Algunos ejemplos conservan aspecto 480x272, ya que fueron adaptados a partir de sketchs de prueba para el shield gameduino 2
  • La librería GD3 es 100% compatible con la placa Teensy 3.6

Importante: es probable que algunos ejemplos llamen pines que no tienen las placas comunes de arduino: A19, A20, A23, A24; esto es porque las pruebas las he estado realizando en una placa Teensy 3.6 y con algunos multisensores de temperatura como el MAX1668 y el MAX6697.

En la siguiente revisión revisaré este punto en los ejemplos para homologar a nomenclatura a Due o MEGA.

Cableado

Se debe considerar una limitante en las dimensiones del cableado empleado para conectar la placa de control (arduino MEGA, DUE, UNO o teensy 3.X) y la pantalla. La longitud màxima debe estar en el rango de 15 a 20 cms.

Las pantallas emplean un cable plano (Riverdi: 20 pines, HotMCU: 10 pines) y un adaptador. En el caso de RIverdi, se puede conseguir un shield que incluye un lector microSD, un amplificador de audio y un selector de alimentación de los leds de retroiluminación de la pantalla.

Esquema de conexiones

Pantalla FT8XX       Arduino Due

MOSI                    11
MISO                    12
SCK                     13
TFT-CS                  10
SD-CS                    5

La libreria GD2 funciona en el arduino Due empleando un porteo de señales SPI, hacia los pines 11, 12, 13 equivalentes al SPI del arduino UNO; es por esta razón que el shield gameduino 2 se puede conectar directamente sobre el arduino Due.

Para que la librería funcione en el arduino MEGA, se deben usar las lineas SPI 51, 50, 52; adicionando esta linea en el encabezado:

#include <EEPROM.h>

En el arduino Due no es necesario usarla.

Las lineas PD e INT, no ha sido necesario emplearlas, por lo menos en las pantallas Riverdi y la FT843 de 4D systems.

En las pantallas HotMCU hay que usar la linea INT, el forero ligthcalamar ha documentado su uso con la libreria, acá se puede revisar su trabajo

Parámetros de inicio para el chip FT813

La configuración para iniciar cada pantalla, debe corresponder al tipo de chip, es posible que existan ligeras variaciones entre cada chip, se deberá ajustar para cada caso y fabricante. En el caso de la pantalla: RVT50UQFNWC00 (FT813 5" de Riverdi)

Estos son los parámetros de configuración:

    GDTR.wr32(REG_ROTATE, 1);
    GD.wr32(REG_HCYCLE, 1056);    // 900 //548
    GD.wr32(REG_HOFFSET, 47);     // 43
    GD.wr32(REG_HSIZE, 800);
    GD.wr32(REG_HSYNC0, 0);
    GD.wr32(REG_HSYNC1, 10);      // 41
    GD.wr32(REG_VCYCLE, 525);     // 500
    GD.wr32(REG_VOFFSET, 23);     // 12
    GD.wr32(REG_VSIZE, 480);
    GD.wr32(REG_VSYNC0, 0);
    GD.wr32(REG_VSYNC1, 10);
    GD.wr32(REG_PCLK, 2);
    GD.wr32(REG_PCLK_POL, 1);
    GD.wr32(REG_DITHER, 0);        // 1
    GD.wr32(REG_CSPREAD, 0);       // 1

La instrucción:

GDTR.wr32(REG_ROTATE, 1);

Forma parte de la libreria gameduino 2, permite establecer la rotación inicial similar a la que tiene el shield gameduino 2 (es equivalente a establecer la rotación del chip FT81X en modo 1).

Excelente aporte, amigazo!

:wink:

Excelente !!!

Todos ustedes que deseen adquirir las pantallas basadas en chip FT8XX de HotMCU, como bien ha escrito TFTLCDCyg voy ampliar mas documentación.para su correcto funcionamiento.
Básicamente estas son mas económicas, pero sin perdida alguna de calidad, el acabado con su marco las hace muy atractivas.
Llegados a este punto, les aconsejo las que tienen mayor resolución, tales como las FT81X (800x480) frente a las FT80X (480x272), con la librería Gameduino 2 es una realidad su funcionamiento.
Estoy preparando una guia de mi experiencia con la cual la voy a compartir con todos vosotros. En esta misma semana la publicaré en este hilo de documentación.

Estos son los enlaces de las cuales tengo dos de cada unas;

Pantalla 5 pulgadas; FT800 Resistiva
Pantalla 5 pulgadas; FT811 Capacitiva

Y todo ello, no hubiese sido posible sin la enorme ayuda que ha realizado TFTLCDCyg.
Saludos! :slight_smile:

19 Noviembre 2016:

  • Adición de la función GD.printNfloat que permite imprimir números con decimales en GD2 y GD3.
  • Adición de ejemplos básicos para la impresión de números con decimales en GD2 y GD3

Después de una ligera adaptación a mi Arduino MEGA+FT810CB-HY50HD funciona perfectamente.
Gracias amigo grande.

Lo siento por mi español porque vivo en Polonia :slight_smile:

1+

Mi versión blobs and clock nixie. :slight_smile:

IDE 1.0.6

FT810_MoOD_Nixie_numbers_DS3231.zip (3.39 KB)

Genial. Esperemos que la librería modificada funcione para tu proyecto. Ojalá y compartas mas avances de tu proyecto.

Saludos desde México.

Estación meteorológica simple como un ejemplo del uso de un función GD.printNfloat..

(DHT22,LDR,DS18820,BMP180/085,RTC 3231/1307 MEGA+FT810CB-HY50HD

IDE 1.0.6 .

:slight_smile:

GD3_SENSOR__RTC_NIXIE.zip (3.63 KB)

@michalkepa gracias por tus aportes !!!

@TFTLCDCyg buen trabajo !!!

Veo que la librería va aumentando en calidad. Voy a probar la función de imprimir números flotantes ya que estoy atascado en ellos.

Llegué a pensar que la librería no serviría... y veo que hasta España y Polonia está "rodando"...

Estoy contento por ayudarles en el desarrollo de sus proyectos, al ver lo que están consiguiendo tengo que aplicarme para ponerme a nivel, he descuidado el diseño de ejemplos, pero en cuanto logre descifrar el MAX6697, seguiré con ellos... hay todavía mucha tela para cortar.

PD: es una pena que James aun no nos oriente respecto a como quitarle el limite de 256 kb a la herramienta gd2asset..., podríamos tener imágenes mas grandes, e incluso manejar otros tipos de letra para manejar texto.

Mi nuevo proyecto, pero aún no está listo ... :slight_smile:

Hoooo muy bonito michalkepa !!!

Mi nuevo proyecto MDC (mULTI dATA cENTER
Ya funcionando el GPS con números flotantes;

Tengo que ir modificando pero ya funciona correcto y gracias infinitas a TFTLCDCyg por la nueva función GD.printNfloat

Y esta la parte de la radio que va aumentando en funciones;

lgenial! :o

Podría usar su radio para mi proyecto hehe :slight_smile:

Estoy con mi "Home INFO" lucho todo el tiempo...

:slight_smile:

Hola michalkepa.

Adjunto mi proyecto inicial del MDC (Multi Data Center) estoy trabajando en el poco a poco
La librería de la parte del radio es este enlace

Todavia queda mucho pero ya empieza a estar fino. :wink:

GD_master_MDC_initial.zip (13.3 KB)

Se ven muy bien esas FT81X mas allá de las fronteras de este escritorio XD. Esperemos que sigan los progresos y a la espera de que nos muestren sus logros.

Sigo batallando aún con los multi-sensores de temperatura MAXIM, sin embargo solo me hace falta acceder a los registros que permiten leer el sensor instalado en cada chip.

04 de diciembre de 2016: Reorganización de ejemplos.

  • Corrección de la orientación táctil respecto a la orientación de la pantalla. Ahora ambos dependen de la instrucción GD.cmd_setrotate(x), ya no hay dependencia respecto a la instrucción interna GDTR.wr(REG_ROTATE, y);.

  • Adición de ejemplos para el manejo de assets fuera de la región 512x512 y corrección menor de errores algunos ejemplos previos

  • Cambio en la combinación de colores de la pantalla de calibración táctil. La personalización de colores se puede conseguir modificando las instrucciones de color dentro de void GDClass::self_calibrate(void), en GD3.ccp

  • Cambio en la combinación de colores y mensaje de la pantalla de error de co-procesador.

  • Adición de la instrucción: #define ORIENTACION 0 //0, 1, 2, 3, establece la orientación de trabajo, con la finalidad de que la pantalla de error se ajuste a la orientación de la pantalla. Esta variable se puede configurar dentro de GD3.ccp, su valor corresponde al valor definido para GD.cmd_setrotate(x)

  • Ejemplo de uso del encoder KY-040 de keyes con un grupo de assets

Buenas.

He recien probado tu nueva librería en mi FT811 y la verdad es muy asombroso del buen funcionamiento de todos los ejemplos, salvo uno el llamado GD3_Menu que me sale en pantalla;

ERROR
Revisar Comandos

Me ha llamado mucho la atención la pecera (Fish Tank) es muy buena aplicación y me esta dando ideas ....

Por otro lado veo lo fino que funciona el GD.cmd_setrotate() , es impresionante y si te digo de como funciona las barras de los MSGEQ7 es para una gran maravilla.
Has afinado muy mucho y te agradezco el enorme trabajo que has realizado, no me canso decirte que eres un gran maestro de los TFT. Así reza.

Leo mucho en el foro oficial actual en la sección de "Display" y me da risa, leo estos mensajes tuyos y me da enorme satisfacción, leo que son muy pocos los que se pueden dar el lujo de comprar estas magnificas pantallas FT8xx por su precio y esto me preocupa, aun así algunos, tu por ejemplos TFTLCDCyc le has dado otra vida.

Sobre mi FT811 (la que tiene el táctil mal) sigue igual, es el panel táctil, mas pruebas no he podido realizar e inclusive estuve a punto de cambiar el táctil, se que se hubiese roto. servirá de pantalla para solo representante y con algún teclado de botones externos. El chino ni pio me dijo. Lo mismo le pido otra y le pongo una disputa por PayPAL (casi seguro lo realizo).

Saludos! :slight_smile:

Vaya, vaya: ese error se debe a que no subí este archivo: PC1.jpg en la carpeta de archivos que van en la SD. En la siguiente actualización lo incluyo

Ese ejemplo en particular da soporte al RTC DS3231, están comentadas las lineas que dan acceso a las lecturas del RTC, ya que de mantenerlas activas, sin que esté presente el reloj, el programa se ralentiza. Ese comportamiento también se presenta en el ejemplo GD3_Nixie_numbers_DS3231.

La idea tras Tank_fish es poder dibujar en los 800x480 imagenes de un grupo de assets, mediante las instrucciones de traslación GD.VertexTranslateX y GD.VertexTranslateY. Está diseñado para usarse con un encoder.

Si se dibuja cualquier asset en la posisción (0,0) y trasladamos la posición a las instrucciones referidas, logramos acceso a los pixeles de toda la pantalla y no solo al sector 512x512.

Se pueden conseguir animaciones simples y porque nó, en una de esas, contar con un minijuego dentro de los proyectos.

PC1.jpg

Muchas gracias por su trabajo !Todas las obras excelentes. :slight_smile:

Un pez en akwarjum son grandes! :slight_smile:

Aquí está otra versión de mi proyecto, pero todavía no es definitivo ....



Modo nocturno GD.wr(REG_PWM_DUTY, 1);

ArduOS_3_aqua.zip (7.23 KB)

Hola, muy buenas a todos y felicitaros por conseguir adaptar esta librería para poder usarla con cualquier pantalla ft80x, ft81x. En la actualidad estoy utilizando una Teensy 3.2 y si es posible me gustaría ver que esquema de conexionado estais utilizando con ella, ya que aqui casi todos los ejemplos que veo solo se muestra para el Arduino Due.
Un Saludo!
Javier

Hola Javier. Aquí te puedes descargar los ejemplos modificados de la librería GD3 lista para funcionar en Arduino MEGA modificada por mi, aunque solo sea poner;

#include <EEPROM.h>

en cada hoja. De esta forma podrás usar los ejemplos. en cuanto al código;

#define PDNPin 8

no creo tengas problemas, ya que lo uso para mi pantalla fuera de la shield de Riverdi

A todo esto @TFTLCDCyg ayer probé la ultima librería que has publicado GD2 del día 4 de Diciembre y veo que no está implementado la definición de la rotación. No admite ningún tipo variable, la pantalla siempre queda fija en una posición. Si lo tienes por la mano le hechas un vistazo, de lo contrario, voy a ver donde esta el problema.