Consejos para usar pantallas EVE2/3 en teensy 4 o en STM32 F103x, 407x, 429, 767

Introduccion

Abro este hilo para ir tocando este tema, quién sabe tal vez se unan pantallas de otros tipos, pero desde ya, reitero distanciamiento de ellas desde hace ya un buen tiempo.

Luego de un tiempo intentando hacer funcionar pantallas EVE con chips FT800, FT801, FT81x en placas arduino de toda la vida, me obstiné (disculpas por la palabra, pero creo que es la que mejor describe lo que pienso) y recientemente BT81x en placas como teensy 3.2, 3.6 y recientemente en el teensy 4, dadas sus características creo que resume todo lo que he buscado por varios años.

En el tránsito hasta este punto, le di una oportunidad a las placas STM32, al principio el core oficial de STM32 me esquivó por meses para poder usarlo, ya que no era facil hacerlo funcionar en el IDE de arduino. Concidentemente, algunos aventureros entusiastas, crearon cores alternos, que al instalarse funcionan a la primero, solo es cosa de ir probando las librerías existentes para medir el posible alcance de estas placas en el IDE de arduino.

Tengo a la mano placas como la F103C8, F103ZG, F103VE, M3-DEMO, F407ZG (M4-DEMO), F429I-DISCO, Core7XXI (F746) y recientemente nucleo F767ZI; en las que al lado de mi hermano lightcalamar, hemos podido al paso del tiempo, habilitar la librería del gameduino 23x del amigo James Bowman, modificar para poder hacer funcionar las pantallas EVE.

Es un proyecto aun en proceso, no hemos tocado los límites de la librería; me motiva para compartir con la comunidad lo que hemos podido aprender de estas pantallas, ¿y porqué no?, aprender de la sabiduría de los compañeros que frecuentan el foro, ya que aun somos novatos en estos temas.

Presentación de números flotantes en pantalla

La impresión de números flotantes puede conseguirse con la instrucción sprintf y presentando la conversión mediante cmd_text.

También puede conseguirse creando una función que extraiga la posición de cada número en una cifra. Las instrucciones de programación de los chips EVE, solo permiten mostrar en pantalla, números enteros a través de la instrucción cmd_number:

GD.cmd_number(GD.w/2, GD.h/2, 31, OPT_CENTER, Bis);

Bis en la linea del ejemplo, es una variable que almacena números decimales del tipo float. Si la empleamos directamente en cmd_number, obtenemos como resultado 0.

Para usar sprintf, debemos proceder de la siguiente forma:

#include <GD23ZU.h>

void setup() 
{
  GD.begin();
  MP();
}
void loop(){}

void MP()
{
  char floatTXT[20];
  float Bis, Yr=2019;

  while(1)
  {
   GD.ClearColorRGB(0x000020);
   GD.Clear();
   GD.get_inputs();
    Bis=Yr/4;
    sprintf(floatTXT,"%g/4=%g",Yr, Bis);  
    GD.cmd_text(GD.w/2, GD.h/2, 31, OPT_CENTER, floatTXT);
   GD.swap();
  }
}

Este es el resultado en pantalla:

El tablero de experimentación es una placa perforada de 9.5 x 15 cms. El lector SD en modo de 4 bits o comúnmente llamado SDIO, está armado con un cable de 8 pines y un adaptador microSD-SD.