Librería gameduino 2 modificada para pantallas FT81X

Suena interesante, pero tenemos una frontera en el formato base del dibujo: hay un límite vertical y horizontal en pixeles que no podemos superar con la herramienta gdxasset.exe.

En este mensaje James lo explica, tal parece que la herramienta para phyton lo puede hacer. No solo dividir de forma vertical, sino que también se puede de forma horizontal.

No debemos dejar de lado aquellas 2048 instrucciones por pantalla del motor EVE/EVE2.

El ejemplo de 2000 sprites de la librería de James, muestra como deben "empaquetarse" las imágenes para el caso de que deseemos presentarlas todas de una vez, pero en esos extremos la velocidad del MCU se torna relevante y las dimensiones de las imágenes también.

Debe existir una forma de "mapear" una imagen de 800x480 (o de 480x272) de tal forma que la carguemos en pantalla una vez, y podamos solo usar fragmentos de la misma. Este aspecto lo he tocado varias veces pero, por falta de tiempo lo he explorado a fondo. No prometo nada, pero puede ser una buena solución gráfica.

Se me ocurre que podamos simplificar todas esas barras en tan solo "6 minibarras": "tres apagadas" y "tres iluminadas", pero no sé si todos los MCU logren soportar la carga de proceso.

Veamos lo que dice el cook-book del FT813 (FT81X_Series_Programmer_Guide)

"...The graphics engine has no frame buffer: it uses dynamic compositing to build up each display line during scan out. Because of this, there is a finite amount of time available to draw each line. This time depends on the scan out parameters (decided by REG_PCLK and REG_HCYCLE) but is never less than 2048 internal clock cycles. FT81X’s internal clock runs at 60MHz.
Some performance limits:
 The display list length must be less than 2048 instructions, because the graphics engine fetches display list commands one per clock.
 The usual performance of rending pixels is 16 pixels per clock
 For some bitmap formats, the drawing rate is 8 pixels per clock. These are TEXT8X8, TEXTVGA and PALETTED4444/565.
 For bilinear filtered pixels, the drawing rate is reduced to ¼ pixel per clock..."

La librería gameduino 2 prioriza placas como la UNO.

Basados en este principio, opté por darle un enfoque diferente a las celdas, ¿por qué llevar a límite al FTXX?, es mejor mantenerlo relajado. Sabemos que gd3asset puede con eso y por lo visto bastante más.

No sé como se comporte el siguiente código en placas AVR, pero en el Teensy 3.6 va muy fluido. Espero te ayude con el proyecto, está diseñado para FT81X. La celda se reduce a 6 dots de 32x18 pixeles. El archivo de imagen no es necesario cargarlo en la SD, pesa apenas 2.55 Kb.

GD23L Analizador MSGEQ7

Ayer por fin, casi he terminado de realizar a toda pantalla FT811 con Arduino MEGA, la representación del Spectrum Audio con 225 led´s ... (código adaptado del ejemplo de TFTLCDCyg, obviamente) y la verdad toda una elegancia.

Nunca me imagine tanta belleza con este ejemplo a estas pantallas.

Aquí el video

También se muestra una gráfica tipo "osciloscopio" donde el pobre Arduino MEGA, por su baja velocidad no alcanza mas, ahora toca probar en Teensy!

Nota muy importante. Cuando realice mi proyecto RadioFM, use 4 MGSEQ7, en este caso solamente 1, sin embargo con otro MSGEQ7 se pueden usar las 14 bandas de audio para diferentes frecuencias, por defecto en la datasheet del integrado se usa un condensador de 33pF, si el segundo MGSEQ7, doblamos esta capacidad es decir 66pF el espectro de frecuencias varía intermediamente donde tendremos desde los 40Hz a 16KHz con 14 filtros. Lo pondré en practica en otros video.

Aplicando algo de trigonometría para dibujar alguno que otro arco...

Velocímetro

Video: Gauge para FT813

24 Mayo 2017: Actualización de la librería ligera GD23L

Cambios:

  • Adición de la función GD.prinNfloat

Este es el código de las 14 bandas con 2 chip MGSEQ7

  GD.Vertex2ii(XbaseD+Xdelta*0, 215,  map(left[0],0,1024,0,15)); 
  GD.Vertex2ii(XbaseD+Xdelta*2, 215,     map(R[0],0,1024,0,15));
  GD.Vertex2ii(XbaseD+Xdelta*4, 215,  map(left[1],0,1024,0,15)); 
  GD.Vertex2ii(XbaseD+Xdelta*6, 215,     map(R[1],0,1024,0,15));
  GD.Vertex2ii(XbaseD+Xdelta*8, 215,  map(left[2],0,1024,0,15)); 
  GD.Vertex2ii(XbaseD+Xdelta*10, 215,    map(R[2],0,1024,0,15));   
  GD.Vertex2ii(XbaseD+Xdelta*12, 215,  map(left[3],0,1024,0,15)); 
  GD.Vertex2ii(XbaseD+Xdelta*14, 215,    map(R[3],0,1024,0,15));
  GD.Vertex2ii(XbaseD+Xdelta*16, 215,  map(left[4],0,1024,0,15));

GD.SaveContext();
   GD.VertexTranslateX(16*260);
   GD.Vertex2ii(440-165, 215,        map(R[4],0,1024,0,15));   
   GD.Vertex2ii(440-110, 215, map(left[5],0,1024,0,15));
   GD.Vertex2ii(440-55, 215,         map(R[5],0,1024,0,15));
   GD.Vertex2ii(500-60, 215, map(left[6],0,1024,0,15));
   GD.Vertex2ii(500, 215,            map(R[6],0,1024,0,15));
GD.RestoreContext();

El espectro de frecuencias van desde 40Hz a los 16KHz, centradas en la pantalla.

Estube estudiando este fin de semana las interupciones del chip FT81xQ que usan las pantallas y no es algo nuevo pero si muy llamativo.

Parte INTERUPCIONES

Entonrtré que existen tres modos;

1.- Stand-By
2.- Sleep
3.- PowerDown

La opción 3, es realizando un POR (Power On Reset) y luego se trataría de averiguar como posicionar la 1 y 2 para realizar un Stand-by y Sleep del mismo.

Desde EVE, hay un bloque tiene un generador de Interupciones, donde las señales que controlan son; PD_N, CS_N y INT_N. esta ultima es de salida hacia el MCU. Concretamente en la pagina 20 del manual del enlace (abajo del todo), existen unos registros que no ví por ningún lado en la libraría GDx, donde se podría realizar alguna que otra función.

Este pin llamado INT_N, es muy interesante.

Ya puestos inclusive lei que se puede variar la resolución del chip a voluntad propia y creo esto si puede ser muy interesante. Por ejemplo pasar de 800x480 a 480x272 ... jugando con los registros HSYNC y VSYNC donde se realizaria un POR sin que el MCU "sufriera" alteraciones alguno.

Parte AUDIO

A todo esto existen dos registros sobre el audio del chip; REG_VOL_PB y REG_VOL_SOUND, estos tienen en la librería su registros pero, no tienen una función determinada, caso del primer registro sería tener el control del mismo de la salida PWM_AUDIO de la pantalla.

Parte BACKLIGHT

Esta ya la conocemos y su uso es muy extendido realizando un REG_PWM_DUTY, desde 0-128 el minimo y maximo de señal para la retroiluminación de los led´s de la pantalla. Sin embargo existe un registro llamado; REG_PWM_HZ, donde el rango de frecuencia que le podamos enviar estan comprendidos entre 250-10000Hz y puede llegar el caso de ser factible para ahorrar dolores de cabeza si algún dispositivo del MCU tiene problemas con la frecuencia emitidas (he tenido reciente un caso con un receptor RF433, donde su frecuencia intermodulaba a la del REG_PWM_DUTY), y consiguientemente realizaba lecturas erroneas.

He aquí otra información mas. Creo llegaré a realizar alguna función extra e imcorporarla a la librería GDx

Este es el enlace de la documentación

Interesante recopilación.

La que tiene mejores prestaciones es la que permite controlar la intensidad de la retroiluminación; incluso permite "apagar" los leds para ahorrar algo de energía.

Menu-slider

El aspecto mas relevante de los controladores FT8XX, es la simplicidad con la que se vincula la pantalla táctil al uso del TFT con tan solo una librería, ya sea la original de FTDI o GDX.

La posibilidad de desplazar objetos en toda la pantalla, podría conseguirse manipulando la coordenada de origen o aquella que deseemos usar como centro de desplazamiento (X,Y) del objeto.

La aproximación mas simple puede conseguirse manipulando dos instrucciones: GD.cmd_slider y GD.cmd_track. Se usan en combinación. El resultado es un botón deslizante que puede ser monitoreado usando una sola entrada táctil.

Por default, el arreglo produce un slider horizontal; el slider vertical, puede obtenerse manipulando las componentes: espesor y longitud.

PP: lo dejo aquí, resuelvo algunos asuntos del trabajo. Sigue ejemplo de uso

Hace unos meses observé este video no tiene despecdicio alguno ...

Me llamo muy mucho el menu de iconos con mutiples paginas !

GDX para STM32F103X

A pesar de estar liado con el trabajo y aun con detalles de la mudanza, he podido encontrar un rato para seguir con los experimentos con la plaquita STM32F103ZET6 de HotMCU.

Este es el avance de la modificación de la librería GDX, aun está en proceso de optimización, pero ya compila con ayuda de las herramientas de stm32duino

GDX para STM32F103X

Las pruebas las estoy haciendo en el IDE 1.8.1. Diseñé algunos ejemplos con los que creo se puede partir para proyectos mas complejos.

La parte táctil tiene algunas fallas aleatorias en la calibración, pero con paciencia y usando el reset de la placa, es posible conseguir calibrar correctamente.

Las lineas SPI (MOSI, MISO, SCK) las soldé directamente al cabezal SPI que tiene la placa. El pin CS corresponde al pin PC5, el pin PC4 lo usaré para el chip select del lector SD.

Para la carga de imagenes estoy usando el Editor EVE versión 1.17, por el momento no he instalado un lector externo SD. Mas adelante me daré a la tarea de instalar uno, para seguir con las pruebas.

La corriente que demanda la pantalla debe suplirse usando el conector usb y el propio ST-Link V2, por lo que necesitamos 2 puertos usb libres.

Buenas.

Con la librería del mensaje anterior y con 2 tardes de trabajo he podido hacer funcionar mi pantalla de HotMCU con esta plaquita diminuta de ST, concretamente la : STM32F103C8T6

De momento las pruebas realizadas han sido para la FT800.

Buscando en Google no encontraran nada, tan solo unos códigos para la placa Discovery de ST con IDE Keil, y los que llevamos algún tiempo con Arduino nos hecha atras (personalmente yo mismo)

Sinceramente y poniendome serio, me estoy preguntando, donde estará el fin de las modificaciones de esta grandisima libreria? creo no hallar respuesta.

Esta placa de ST, tiene un procesador ARM de 72 MHz de reloj, con 20Kb de RAM y 64Kb de flash para nuestros códigos. A todo esto, he de comentar que posee dos BUS SPI, el primero trabaja con logica de 3,3 voltios, y el SPI_2, tolerante con 5 Voltios, pues bien las pantallas de HotMCU, su salida es tolerante a 5 voltios, es decir que se pueden usar en MCU, tal como Arduino UNO, Nano o MEGA, pero lo que aprendí ayer, estas pantallas trabajan con lógica de 3,3.

Ampliaré esta documentación en el hilo que cree especificamente dedicado a estas.

Volviendo atras, todavía queda por realizar de poner el lector microSD a estas placas.

Sea como sea, por 2$ de esta MCU + 28$ de una pantalla FT800, se tiene todo un arsenal de hardware donde el juego esta asegurado, quien puede dar mas?

Pondré unas capturas y video en breve, donde podran ver en acción esta novedad, y sin olvidarme del enorme trabajo realizado por @TFTLCDCyg

Aquí 2 nuevos videos de esta pequeña placa con pantallas FT8xx.

FT800 (480x272px)

FT810 (800x480px)

Han sido días explorando esta opción. Espero subir pronto algún ejemplo y por supuesto, a la espera de que otros experimenten con este tipo de MCU, que también se pueden programar con el IDE de arduino.

Saludos
FT81XMania

Hello everyone, I wanted to thank you guys for all the work you have done.

I recently started playing with some HotMCU FT811 5" screens and was wondering if there would be any easy way to run multiple screens on a Teensy 3.2 or 3.6. So far the only thought I have had is to use a second MCU to run the second screen and just send data from the Teensy.

Two screens FT8XX on the same teensy, is not possible with the library.

Maybe through serial communication between two teensy´s boards, with one TFT in each MCU

For some time I put two screens: FT801 and oled SD1331 on an arduino due

Hmm, are resources kept on the Teensy?
If not maybe we could just sneak an external CS control to jump between selecting one screen and the next.

HI,

Have you seen the replacements for the FT81x ? THE BT815 / 6

http://brtchip.com/bt81x/

Este es un foro en Español, y mas allá del interés que tenga una persona de otro idioma debe respetar el idioma del foro.
Asi que no usar inglés para preguntar/responder
Lean las Normas del foro.
How to use this forum

Buenos dias,

viste los reemplazos para el FT81x? EL BT815 / 6

http://brtchip.com/bt81x/