Go Down

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

TFTLCDCyg

#30
Jun 20, 2016, 09:53 pm Last Edit: Jun 20, 2016, 10:27 pm by TFTLCDCyg
Librerias para gameduino 2

Gameduino 2 (y FT80x):
http://excamera.com/files/Gameduino2.zip

Libreria en desarrollo para gameduino 2, con soporte para FT8xx: https://github.com/jamesbowman/gd2-lib

Ajuste de la libreria GD2

Me centraré en los pasos para modificar la libreria GD2 y dejarla a punto para cualquier tipo de pantalla FT80x. Con el FT813 tendré que invertir mucho mas tiempo...

Luego de descargar el zip, hay que limpiar un poco el directorio, ya que prácticamente "estamos entrando a una parte del taller de James"


Ubicamos la libreria en la carpeta correspondiente para que se active en el IDE de arduino:


Estas son las lineas que se encuentran en el archivo GD2.ccp original

Code: [Select]
#define SD_PIN        9    // pin used for the microSD enable signal

#define BOARD_FTDI_80x    0
#define BOARD_GAMEDUINO23 1
#define BOARD_EVITA_0     2

#define BOARD         BOARD_GAMEDUINO23 // board, from above
#define STORAGE       1                 // Want SD storage?
#define CALIBRATION   1                 // Want touchscreen?

// FTDI boards do not have storage
#if (BOARD == BOARD_FTDI_80x)
#undef STORAGE
#define STORAGE 0
#endif


Ésta es la versión personalizada para ajustarse al shield de Riverdi para arduino (pantallas FT80x y FT81x), con soporte para lector micro SD externo

Code: [Select]
#define SD_PIN               5   //5--->SD-Riverdi shield,  9--->para gameduino 2

#define BOARD_FTDI_80x       0
#define BOARD_GAMEDUINO23    1
#define PROTO                0   //0-->FT843, FT80x; 1--> MEGA, UNO, gameduino 2
#define BOARD_EVITA_0        2

#define BOARD                0         // board, from above
#define STORAGE              1   // Want SD storage?
#define CALIBRATION          1   // Want touchscreen?

// FTDI boards do not have storage
#if (BOARD == BOARD_FTDI_80x)
#undef STORAGE
#define STORAGE              1
#endif


La instrucción PROTO en GD2

PROTO, definida en la linea siguiente:
Code: [Select]
#define PROTO                0

Permite controlar la disposición de la tabla de colores, orientación de pixeles y orientación del panel táctil de las pantallas FT80x. El gameduino 2 tiene una disposición "invertida", respecto al diseño original de FTDI, la razón posiblemente se deba al ángulo de visión de la pantalla del shield gameduino 2.

En la libreria nueva (GD2), esa linea ha sido suprimida, es importante rescatarla, ya que resulta mucho mas fácil manipular el cableado, con la orientación que tiene el gameduino 2, que con la disposición que tiene de fábrica el FT80x.

En el archivo GD2.ccp original, las lineas en las que debemos insertar la instrucción están dispuestas de esta forma:

Code: [Select]
#if (BOARD == BOARD_FTDI_80x)
  GDTR.wr(REG_PCLK_POL, 1);
  GDTR.wr(REG_PCLK, 5);
#endif
  GDTR.wr(REG_PWM_DUTY, 0);
  GDTR.wr(REG_GPIO_DIR, 0x83);
  GDTR.wr(REG_GPIO, GDTR.rd(REG_GPIO) | 0x80);

#if (BOARD == BOARD_GAMEDUINO23)
  ConfigRam cr;
  byte v8[128] = {0};
  cr.read(v8);
  if ((v8[1] == 0xff) && (v8[2] == 0x01)) {
    options &= ~(GD_TRIM | GD_CALIBRATE);
    if (v8[3] & 2) {
      GDTR.__end();
      GDTR.hostcmd(0x44); // switch to external crystal
      GDTR.resume();
    }
    copyram(v8 + 4, 124);
    finish();
  } else {
    GDTR.wr(REG_PCLK_POL, 1);
    GDTR.wr(REG_PCLK, 5);
    GDTR.wr(REG_ROTATE, 1);
    GDTR.wr(REG_SWIZZLE, 3);
  }
#endif


La secuencia de instrucciones que permite modificar la rotación de colores, panel táctil y pixeles en las pantallas FT80x queda así:

Code: [Select]
#if (BOARD == BOARD_FTDI_80x)
  GDTR.wr(REG_PCLK_POL, 1);
  GDTR.wr(REG_PCLK, 5);

// Avoid inverted colours on alternative-FT800 boards
#if PROTO == 1
  GDTR.wr(REG_ROTATE, 1);
  GDTR.wr(REG_SWIZZLE, 3);
#endif
    GDTR.wr(REG_ROTATE, 1);   
// Avoid inverted colours on alternative-FT800 boards

#endif
  GDTR.wr(REG_PWM_DUTY, 0);
  GDTR.wr(REG_GPIO_DIR, 0x83);
  GDTR.wr(REG_GPIO, GDTR.rd(REG_GPIO) | 0x80);

#if (BOARD == BOARD_GAMEDUINO23)
  ConfigRam cr;
  byte v8[128] = {0};
  cr.read(v8);
  if ((v8[1] == 0xff) && (v8[2] == 0x01)) {
    options &= ~(GD_TRIM | GD_CALIBRATE);
    if (v8[3] & 2) {
      GDTR.__end();
      GDTR.hostcmd(0x44); // switch to external crystal
      GDTR.resume();
    }
    copyram(v8 + 4, 124);
    finish();
  } else {
    GDTR.wr(REG_PCLK_POL, 1);
    GDTR.wr(REG_PCLK, 5);

// Avoid inverted colours on alternative-FT800 boards
#if PROTO == 1
  GDTR.wr(REG_ROTATE, 1);
  GDTR.wr(REG_SWIZZLE, 3);
#endif
    GDTR.wr(REG_ROTATE, 1);   
// Avoid inverted colours on alternative-FT800 boards
  }
#endif



TFTLCDCyg

#31
Jun 20, 2016, 10:06 pm Last Edit: Jun 21, 2016, 08:01 pm by TFTLCDCyg
Resta modificar el archivo wiring.h, para ajustar el cableado a la disposición del shield-arduino de Riverdi.

Primeras lineas del archivo wiring.h original:

Code: [Select]
#ifndef CS
#define CS 8
#endif

class GDTransport {
private:
  byte model;
public:
  void ios() {
    pinMode(CS, OUTPUT);
    digitalWrite(CS, HIGH);
    pinMode(9, OUTPUT);
    digitalWrite(9, HIGH);


Archivo wiring.h ajustado:

Code: [Select]
#ifndef CS
#define CS 10
#endif

class GDTransport {
private:
  byte model;
public:
  void ios() {
    pinMode(CS, OUTPUT);
    digitalWrite(CS, HIGH);
    pinMode(5, OUTPUT);
    digitalWrite(5, HIGH);


Adjunto los archivos modificados. Funcionan para pantallas FT80x, gameduino2 en placas arduino como el Due, UNO, MEGA(hay que soldar algunas lineas externas entre MOSI, MISO y SCK a los pines correspondientes 11, 12 y 13). También funciona para el teensy 3.2.

Hardware de pruebas:

- Arduino Due
- Shield casero para el break out de 20 pines de Riverdi
- FT801 con panel táctil capacitivo
- Lector micro SD para soporte del FT801
- MicroSD de 4Gb, kingston, clase 4 (formateada en fat32) para usar en conjunto con la libreria GD2
- Lector micro SD para almacenamiento general (un módulo catalex, que al día de hoy no dónde se fabrica!!!)
- MicroSD de 10Gb, kingston, clase 10 (formateada en fat32) para el módulo catalex
- OLED de 96x64 (a colores)


lightcalamar

El principio de funcionamiento de la pantalla FT801 está considerado dentro de las librerias para el gameduino 2: (la gameduino2 y la GD2, que corresponde a la versión multifuncional FT80x/FT81x)

Las lineas de conexión para cualquier pantalla FT80x a un arduino Due son:

Code: [Select]
FT80x    Due
GND      GND
VCC      3V3
MOSI     MOSI
MISO     MISO
SCK      SCK
CS       pin digital disponible



Este es el ejemplo hello world de la libreria GD2:

Code: [Select]
#include <SPI.h>
#include <GD2.h>

void setup(){ Serial.begin(1000000); // JCB
  GD.begin(0);}

void loop(){GD.ClearColorRGB(0x103000);
  GD.Clear();
  GD.cmd_text(GD.w / 2, GD.h / 2, 31, OPT_CENTER, "Hello world");
  GD.swap();}

Sketch uses 13,664 bytes (2%) of program storage space. Maximum is 524,288 bytes.

Creo que las diferencias son mas que evidentes.

No es solo conectar la nueva pantalla, hay que hacer algunos ajustes en la libreria GD2 para que las pantallas FT80x se comporten como lo hace la pantalla del gameduino 2.
El principio de funcionamiento de la pantalla FT801 está considerado dentro de las librerias para el gameduino 2: (la gameduino2 y la GD2, que corresponde a la versión multifuncional FT80x/FT81x)

Las lineas de conexión para cualquier pantalla FT80x a un arduino Due son:

Code: [Select]
FT80x    Due
GND      GND
VCC      3V3
MOSI     MOSI
MISO     MISO
SCK      SCK
CS       pin digital disponible


Las lineas extra que tiene cualquier pantalla FT80x: INT y PD, no se usan en las librerias para gameduino 2.

Adicionalmente, la mayoría de pantallas FT80x no tienen un lector SD, y pocas tienen instalado el amplificador en la salida de audio.

Para adicionar un lector SD, se puede usar un lector microSD. En los experimentos previos para anexar un lector, me di cuenta que debe estar diseñado para 3.3V, y no debe tener instalado un regulador de voltaje 5V/3.3V. Para minimizar las fallas, cada linea debe unirse a las lineas MOSI/MISO/SCK de la  pantalla

La memoria micro SD recomiendo que sea de 4Gb, clase 4, preferentemente kingston, formateada en FAT32.

¿Por qué usar las librerias del gameduino 2, en lugar de las diseñadas por FTDI?. Es bastante simple.

Veamos el ejemplo hello world que viene en la libreria FTDI para el FT843



Code: [Select]
#include <SPI.h>
#include <GD2.h>

void setup(){ Serial.begin(1000000); // JCB
  GD.begin(0);}

void loop(){GD.ClearColorRGB(0x103000);
  GD.Clear();
  GD.cmd_text(GD.w / 2, GD.h / 2, 31, OPT_CENTER, "Hello world");
  GD.swap();}

Sketch uses 13,664 bytes (2%) of program storage space. Maximum is 524,288 bytes.

Creo que las diferencias son mas que evidentes.

No es solo conectar la nueva pantalla, hay que hacer algunos ajustes en la libreria GD2 para que las pantallas FT80x se comporten como lo hace la pantalla del gameduino 2.
Gracias por la información TFTLCDCyg. Esto he estado buscando todo el fin de semana y lo tenía delante de mis ojos (este mensaje tuyo)

Hoy me has alegrado el día.

Como bien sabes tengo la FT800 y después de leer tu post, creo que me he vuelto a animar, estaba totalmente aburrido y desilusionado. Te explico, he llegado a pensar que "no es tan difícil", pues si,  ya que la librería procedente de FTDI es extremadamente complicada, ademas he leído  los interminables PDF de la pagina oficial, en cuyos ejemplos, no me ha funcionado casi nada. Solo los ejemplos de las librerías.

Voy esta tarde a repasar todo tu post, le voy a poner mi DUE y conectar la pantalla que solo muestre el "Hola mundo".

Lo mas curioso es que veo esta pantalla (FT800) le da 100.000 vueltas a todas las que he probado, pero cachis, que va costar un rato hacerla andar. Bueno ya comentaré mi experiencia.

Saludos de nuevo y gracias! :)
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

lightcalamar

#33
Jun 21, 2016, 11:14 am Last Edit: Jun 21, 2016, 11:27 am by lightcalamar
Me olvidé de lo mas importante para ir trabajando;

Code: [Select]

Las lineas de conexión para cualquier pantalla FT80x a un arduino Due son:

FT80x    Due
GND      GND
VCC      3V3
MOSI     MOSI
MISO     MISO
SCK      SCK
CS       pin digital disponible


Las lineas extra que tiene cualquier pantalla FT80x: INT y PD, no se usan en las librerias para gameduino 2.


Donde dices CS pin digital disponible, a que pin a de ir? no me quedó claro.
Y otra cosa, sobre que IDE de Arduino funciona correcto, he leído que la versión 1.5.4, puede ser?
A ver si me puedes ayudar.
Gracias.
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

TFTLCDCyg

#34
Jun 21, 2016, 04:47 pm Last Edit: Jun 21, 2016, 07:29 pm by TFTLCDCyg
Espero que te sirva y te evites la pena de sumergirte en el lenguaje complejo de las librerías de FTDI. Creo que iremos al paso aprendiendo a usar la libreria.

Estoy usando el IDE 1.6.3, y creo que me quedaré en esa versión. No tengo la versión 154, pero tengo la 156-r2, la librería de gameduino 2 funciona sin problemas. Habrá que experimentar.

Respecto al cableado: CS, puede ser cualquier pin digital disponible, te recomiendo que sea 8, 9 o 10. Pero creo que se puede usar cualquier otro (habrá que experimentar con este punto).

Por cierto, la libreria para gameduino 2 tiene una particularidad que debo reiterar:

Por código, tiene transportada la señal SPI del conector del arduino Due, a los pines SPI correspondientes al arduino UNO, es decir que puedes conectar la señal SPI de cualquier pantalla FT80x, a los pìnes 11, 12 y 13.

Es por esto que se puede conectar el shield gameduino 2 directamente sobre un arduino Due, tal como se conecta en el arduino UNO, sin cableado conectado al conector SPI del arduino Due.



En el arduino MEGA hay que conectar los pines SPI a los pines correspondientes 11, 12 y 13, (creo que se podrían sustituir "los nombres de pila" de los puertos SPI del MEGA en lugar de los correspondientes del arduino Due) y con eso se consigue instalar el shield gameduino 2 directamente:





Puedes usar el cabezal SPI del arduino con otros dispositivos, como una pantalla Oled, ILI9341 o un lector micro SD adicional. Si los conectas a 11, 12, 13 pensando en usar "el porteo" o transferencia por código, se apaga la pantalla FT80x.

El único dispositivo SPI que ha funcionado sin afectar la pantalla, afortunadamente fue uno de los  lectores microSD de 3V3, y con él es posible acceder a todo el potencial gráfico del FT801.

La longitud del cableado entre el arduino y la pantalla FT80x, debe estar entre 14 y 20 cm, mas allá de esa longitud la pantalla se apaga.

(Una queja "oculta")

Desafortunadamente conforme salen nuevos ide's, en lugar de mejorarlos, y corregir errores, empeoran la compatibilidad con las librerias que funcionan bien con versiones previas. Encima no ha habido una corrección de fondo que elimine esta "joyita", si usas y0 ("ye cero"), seguido de un y1 ("ye uno"), obtienes:

Code: [Select]
int y0, y1;

Code: [Select]
GD2_due_lecturas_5.ino:11:5: error: 'int y0' redeclared as different kind of symbol
In file included from C:\Users\StarX\AppData\Roaming\Arduino15\packages\arduino\hardware\sam\1.6.4\cores\arduino/Arduino.h:26:0,
                 from C:\Users\StarX\AppData\Roaming\Arduino15\packages\arduino\hardware\sam\1.6.4\variants\arduino_due_x/variant.h:36,
                 from C:\Users\StarX\AppData\Roaming\Arduino15\packages\arduino\hardware\sam\1.6.4\libraries\SPI/SPI.h:15,
                 from GD2_due_lecturas_5.ino:1:
c:\users\starx\appdata\roaming\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\arm-none-eabi\include\math.h:468:15: error: previous declaration of 'double y0(double)'
 extern double y0 _PARAMS((double));
               ^
GD2_due_lecturas_5.ino:11:9: error: 'int y1' redeclared as different kind of symbol
In file included from C:\Users\StarX\AppData\Roaming\Arduino15\packages\arduino\hardware\sam\1.6.4\cores\arduino/Arduino.h:26:0,
                 from C:\Users\StarX\AppData\Roaming\Arduino15\packages\arduino\hardware\sam\1.6.4\variants\arduino_due_x/variant.h:36,
                 from C:\Users\StarX\AppData\Roaming\Arduino15\packages\arduino\hardware\sam\1.6.4\libraries\SPI/SPI.h:15,
                 from GD2_due_lecturas_5.ino:1:
c:\users\starx\appdata\roaming\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\arm-none-eabi\include\math.h:469:15: error: previous declaration of 'double y1(double)'
 extern double y1 _PARAMS((double));
               ^
Error compiling.


¿Es en serio?

La siguiente linea, (en lugar de la que describo):
Code: [Select]
int x0, x1

Compila sin problemas... quiero tener la mente abierta y que es un error mío al escribir "y0 y y1"...

Digo esto porque luego de ver "hello world" en la FT801, inmediatamente me puse a trabajar en el entorno del controlador, y zas!, a la primer compilación con "int y0, y1", saltó el error que refiero.

Solo por seguir con el ejercicio, el IDE 1.5.6-r2, da este error:

Code: [Select]
int y0, y1;

Code: [Select]

sketch_jun21a:2: error: 'int y0' redeclared as different kind of symbol
c:\arduino-1.5.6-r2\hardware\tools\g++_arm_none_eabi\bin\../lib/gcc/arm-none-eabi/4.4.1/include-fixed/math.h:364: error: previous declaration of 'double y0(double)'
sketch_jun21a:2: error: 'int y1' redeclared as different kind of symbol
c:\arduino-1.5.6-r2\hardware\tools\g++_arm_none_eabi\bin\../lib/gcc/arm-none-eabi/4.4.1/include-fixed/math.h:365: error: previous declaration of 'double y1(double)'

:o  :o  :o  :o

Luego de esta "pecata minuta", mejor usaré
Code: [Select]
int y00, y01;
 y todos felices!

A estas alturas, espero que ya veas el ejemplo hello world. Sube algunas fotos de tu pantalla FT, para curiosear los avances, sería bueno ver que los esfuerzos los puede replicar alguien más, ayudaría bastante en la retroalimentación, nunca está demás una vuelta de timón hacia la dirección correcta.

lightcalamar

Buenas noticias!!!! , pero de las buenas.

He conseguido hacer funcionar mi pantalla comprada en esta tienda. Llevo peleando con ella 3 días enteros (con sus noches incluidas, que no me han dejado dormir casi...) y como dije solo funcionaba con la librería de FTDI.

Pues bien también funciona con la librería GD2
Va le a todo esto sé que no tiene audio, acelerometro ni microSD, todo a su tiempo...

Esta pantalla tiene tiene una placa (shield) básica sin nada mas que operar solo con la librería FTDI, pues hay que realizar tan solo un circuito de POR (Power On Reset) al pin PD_N del chip FT800, resultado: FUNCIONANDO.

Cuando leí este mensaje de Gameduino me desanime por completo, ya que el usuario tiene el mismo problema que yo. He tirado de la DataSheet del FT800 a nivel del hardware FT800 DATA y aquí he logrado la solución.

Lo mismo se va a vender esta pantalla como rosquillas, lo digo por el precio y para iniciarse como yo, pues va bien para empezar.

@TFTLCDCyg creo, la pantalla ahora si que empieza a prometer.

Mas tarde escribo la solución, que me voy a tomar unas cervezas para celebrarlo.  :)  :)  :)

Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

TFTLCDCyg

#36
Jun 21, 2016, 08:28 pm Last Edit: Jun 21, 2016, 08:38 pm by TFTLCDCyg
Que ya veas que sirva con la librería para gameduino 2, es un enorme avance. :smiley-draw:

Te sugiero que el siguiente paso lo apliques en encontrar un lector micro SD, que te dé el soporte para manejo de imágenes.

La librería puede manejar grupos de hasta 15 imagenes pequeñas, y lo mejor de todo: en formato png, con lo que puedes tener iconos o imagenes con transparencias!!!.

Esta pantalla puede funcionar con las librerías gráficas de phyton27, sin embargo no he podido hacer que funcionen. Quizás con una instalación limpia del sistema operativo lo pueda conseguir. Con esas herramientas activadas, es posible crear sprites en celdas de hasta 8 imagenes cada una. Por ejemplo se podrían construir archivos de imagen con digamos 5 imagenes png, con 8 celdas cada una, consiguiendo 5x8 = 40 imagenes con un solo archivo sprite. Espero un día instalar correctamente las librerias. Claro siempre estaremos limitados a los 256 kb del FT80x.

Aparentemente no es mucha memoria, pero eso no es una límitante que debilite la plataforma.

Video: iconos png

lightcalamar

#37
Jun 22, 2016, 12:39 am Last Edit: Jun 22, 2016, 01:12 am by lightcalamar
Buenas.

Como dije las pantallas chinas de bajo coste de esta tienda de China funcionan correctamente en la librería GD2 del cual, le doy las gracias por este post a TFTLCDCyg.

No hubiesen funcionado jamas  si no, después de releer mas de 20 veces el post completo.
Como tengo varios proyectos en mente acabo de realizar un pedido para no quedarme sin stoks cosa que ocurre cuando se escribe algo y todo el mundo pide...

He aquí la solución.

Quote
Las lineas extra que tiene cualquier pantalla FT80x: INT y PD, no se usan en las librerias para gameduino 2.
Adicionalmente, la mayoría de pantallas FT80x no tienen un lector SD, y pocas tienen instalado el amplificador en la salida de audio.
Para esta pantalla no es valido.

Esto anterior es lo que ha escrito @TFTLCDCyg en el caso de estas "pantallas Chinas de bajo coste" como la que yo he comprado supongo porque es asi, TFTLCDCyg las usa con shiels personalizadas como Gameduino, ADAM, y otras mas, por la red están sin stock, y entonces me puse a investigar este ultimo sábado de mes (día 18 del corriente) y sin conexion alguna.

Hoy he recuperado mi Arduino DUE y conectado el SPI de la pantalla. Totalmente negra... Sin nada.
Volvi a mi Arduino MEGA. Al menos sabía que funcionaba la librería FTDI y funcionando, la pantalla, seguía a la vida.

Pero por "arte de magia" o casualidad al intentar subir la hoja de ejemplo de la librería FTDI y luego seguido a los dos segundos el ejemplo de la librería GD2 con el consejo de TFTLCDCyg, visualice en unas fraciones de milisegundos que la pantalla ponia " HELLO WORLD" , entonces dije EUREKA!!!

solo unos milisegundos y funcionó, por lo tanto la pantalla funcionaría con la librería GD2.
Como lo adiviné?

Sencillo. Al principio de luchar con la pantalla descubrí que el pin llamado PD_N del circuito integrado grafico FT800 es no mas que un reset al chip anterior citado. Con esto funcionó cuando lo pusé en el pin correcto de la placa Arduino ( en modelo UNO y MEGA), vale entonces hoy el pin PD_N es MUY IMPORTANTE si no se tiene una shield adecuada como ha escrito TFTLCDCyg.

La solución es esta, hay que montar una red R+C al pin PD_N (o bien hacerlo exteriormente, como lo he realizado yo) como pone la DataSheet del circuito integrado FT800;



Donde VCCIO es 3,3V (MUY IMPORTANTE !!!) no conectar a +5VCC, hay que hacerlo a 3,3VCC



Resultado;

Montar la red R+C exterior;


Como quedo compilado con IDE de Arduino 1.6.5;



y otra mas;



Al revés... bueno anteriormente TFTLCDCyg comento de modificar las librería...
Mañana lo pruebo ya definitivamente en mi Arduino DUE y pondré mas capturas. A todo ello voy a incluir esta información de "peso en oro" a mi mensaje ne Documentos de este foro para la pantalla china que es este enlace pantalla FT800 china

Saludos!  :)
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

TFTLCDCyg

En la pantalla FT843 (FT800) de 4D systems, el propio gameduino 2 y en la FT801 de Riverdi, no he usado las lineas INT ni PD.

Como indicas es posible que el FT800 en tu pantalla, esté conectado de forma muy austera.

Esperemos que tengas funcionando correctamente tu pantalla en el arduino Due. Gracias por compartir los avances.

lightcalamar

#39
Jun 23, 2016, 11:17 pm Last Edit: Jun 23, 2016, 11:35 pm by lightcalamar
Buenas.
Doy hoy por decir esto;

La pantalla  FT800 de este modelo;


comprada en esta tienda de Hong-Kong funciona correctamente con la librería GD2.

Ayer tube problemas...
La monté sobre mi Arduino DUE y no funciono... la volví a poner sobre mi Arduino MEGA y funcionaba( tal y como la tenía), pero solo una cosa, solo funcionaba con el codígo del ejemplo del "Hello World" ( a partir de ahora "HELLOWORD"

Este es el código que funcionaba con realizar el POR (Power On Reset);

Code: [Select]

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


void setup(){

  GD.begin(0);

}

void loop()
{
  
  GD.ClearColorRGB(0xff0000);
 
  GD.Clear();
  GD.cmd_text(GD.w / 1, GD.h / 2, 31, OPT_CENTER, "HOLA TOMAS F.");
  GD.swap();
}


Todo bien, pero al cargar desde la librería un ejemplo de código como este;

Code: [Select]

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

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

void loop()
{
  GD.Clear();
  GD.Begin(POINTS);
  for (int i = 0; i < 100; i++) {
    GD.PointSize(GD.random(16 * 50));
    GD.ColorRGB(GD.random(256),
                GD.random(256),
                GD.random(256));
    GD.ColorA(GD.random(256));
    GD.Vertex2ii(GD.random(480), GD.random(272));
  }
  GD.swap();
}



Este último se queda la pantalla en fade (desvanecimiento), resetear y/o volver a conectar el cable de alimentación.. lo mismo pantalla blanca y desvanecimiento... Esto toda la tarde ayer me frusto de lo GRANDE...

Hoy he recuperado la ilusión. La única diferencia de un código a otro esta en setuo donde el código "bueno" pone;

Code: [Select]

GD.begin(0);


y en el segundo pone;

Code: [Select]

GD.begin();


y este es el problema el GD.begin (sin numero);... he ido probando mas ejemplos como los de las librerias y ya funcionando todas (algunas no por el IDE de Arduino, como no.. jejeje), estoy usando la 1.6.5

a todo esto en el setup de cualquier código para subir he investigado esto:

Code: [Select]

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...


Y otra buena noticia

he conseguido por software realizar el POR (Power On Reset) de la pantalla realizando este código:

Code: [Select]

#define PDNPin 8
...

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


Consultando las DataSheet del IC FT800, necesita unos 5ms desde el inicio de pantalla que paje a nivel bajo y vulta a nivel alto, lo he recogido de la pagina oficial y ponía estos delay, lo mismo se trata de substituir por delayMicroseconds.

De momento y a esta pantalla también he averiguado que los colores parpadean y/o son inverson del rojo al azul. La solución es poner en el setup este código después del GD.begin(x);

Code: [Select]

GD.wr(REG_SWIZZLE, 0);


No he leído la extensa y grandísimo PDF de la librería GD2 pero, no acabo de ver por el cual el GD.begin(x) era el problema.... Seguiré investigando pero ya digo que la pantalla en totalmente funcional. Lo siguiente y tengo los componentes le voy a poner el audio y una SD, realizada por mi.

Dejo el código tipo INICIAL (luego ustedes programan lo que sean...) de como queda la pantalla para Arduino UNO y MEGA;

Code: [Select]

#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, "HOLA TOMAS F.");
   GD.swap();
}


@TFTLCDCyg no quiero desorientar este tema tuyo, pero tenía que explicar, luego lo realizo en mi tema que puse en "DOCUMENTACIÓN" de esta pantalla para consultas. A todo ello me respondió el Admin de Gameduino. Le pondré la solución por software al pin PD. Y repito sin tus mensajes esta pantalla no hubiese jamas funcionando en GD2, esto se le llama "team" no?

Saludos.
P.D. Mañana voy a probar con el DUE, ahora que sé que es todo correcto.
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

TFTLCDCyg

#40
Jun 24, 2016, 07:01 am Last Edit: Jun 24, 2016, 07:01 am by TFTLCDCyg
Al contrario, gracias por el aporte y es bienvenido las veces que gustes compartir. Esas pantallas las vi hace bastante tiempo, pero por falta de recursos no me pude hacer con una. Decidí ahorrar un par de veces para conseguir la FT843 (un FT800) de 4D systems porque me agradó el diseño del shield para arduino. Batallé mucho con la libreria FTDI.

Luego conseguí un gameduino 2 y me sumergí en su libreria, pude ver el potencial de la pantalla.

Todo el tiempo quise una pantalla capacitiva de Riverdi, mas que nada por el tema dela tecnología que ellos usan en el cristal táctil, pero el costo era algo prohibitivo. No obstante decidí esperarme un rato y averiguar como podía conseguir una pantalla hecha en Polonia hasta México!!!.

Varias de las ideas que has podido implementar voy a tratar de usarlas en la pantalla FT813 (un caprichito mas, jejejeje), para ver si logro hacerla funcionar con la GD2, la librería de FTDI me "cansa los ojos". (con ella aprendí bastante pero no tanto como con la librería del gameduino2)

Gracias por los consejos, es la idea de este post.

lightcalamar

#41
Jun 27, 2016, 12:47 am Last Edit: Jun 27, 2016, 01:12 am by lightcalamar
Otras buenas noticias!

Siguiendo tus consejos @TFTLCDCyg me he fabricado una placa para obtener una tarjeta lectora a MicroSD construida a través de un adaptador de SD desde este esquema;



Estoy en la espera de tres tipos diferentes y tardarán en llegar todavía. El problema creo que es el integrado "latches" que tienen. Ademas no creo es problema del regulador de 5 -> 3,3 Voltios, el problema es el IC

De momento funciona correctamente.
Así ha quedado;







He seguido tus pasos y darte las gracias por el programa GD2asset para traspasar los ficheros a la librería GD2. Estuve ayer toda la tarde intentando lograrlo en Win desde instalar Python y no funcionó, en Linux si, pero repasé este tema en la segunda pagina, y todo decir que ya lo tengo guardado en mi Pendrive de "ORO".

Tengo muy claro que no voy jamas a comprar un LCD -alfanumérico-, gráfico monocromo ni nada parecido ni los LCD con controlador ILxxxx etc. Lo tengo a partir de hoy muy claro que los LCD pasan con Arduino a pantalla con chip FT8XX. Lo demás es tirar dinero y perder tiempo.

Es algo que si no lo experimentas no sabes del potencial. Mira una cosa tan grande al menos claro cuando yo me decido por comprar esta pantalla de bajo coste que te comente para experimentar. ya sé que hay shields para ella a precios prohibitivos, sin embargo ya le tengo puesto la SD, ahora toca el audio y esto va ser fácil.





Fácil si lo interpretas bajo que uno sabe de Electrónica, consultas esquemas, DataSheet y vas montando todo lo que hace el fabricante de placas (Shields) claro a nivel personal y entiendo que no todo el mundo sabe realizarlo, por lo tanto he aquí el gasto de los 100$, ahora lo entiendo, para mi esto es tirar dinero y es mas cuando sabes interpretar un esquema lo pones en practica y a funcionar.

No sé exactamente donde voy a llegar con estas pantallas, de hecho ya tengo pedida otra igual y dos FT812 (Capacitivas con resolución 800x480) será otro mundo!!!. jejejeje

No me cansó en darte las gracias en tu aportación de este GRAN post tuyo @TFTLCDCyg, posiblemente lo próximo será decirte que ya tengo funcionando el audio también (que por cierto, le tengo ya ganas probando lo que da la pantalla), los que no lo han probado esta pantalla , ni se imaginan de SERIE lo que esto hace...  Bueno lo que hace la librería GD2, se supone que no es para crear una consola... entonces sería perder tiempo y dinero. Lo que no le voy hacer de momento es tener un acelerometro, porque lo veo a mi modo inútil, a mi no me sirve. No esta en mis proyectos.

A todo esto una consulta..
El programa GD2asset sirve también para transformar los archivos de audio a IMA?
Si es así como pone en la pagina oficial de Excamera?

A todo esto, voy a realizar una placa PCB (shields) tanto para Arduino UNO y MEGA, donde solo se pondrán conectores. Y/o bien el modulo de audio y la SD estén integradas a la misma placa. Realizaré los fotolitos y de esta forma quedará sin cables y le pondré extras como BUS i2C y las entradas analógicas sobre todo.

Sin comentarios mas, voy a seguir con esta magnifica pantalla.
Saludos!!!  :)




Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

TFTLCDCyg

Que bien que vas progresando con el experimento. De hecho los nuevos lectores microSD los construí con soportes como los de tu experimento, solo que no los he probado, básicamente por que no me quiero cargar mi lector microSD de 4Gb (que también es de oro jejejeje)

Respecto a las pantallas FT81X, la que al parecer funciona al 100% con la libreria GD2, es la FT810C.

No he podido conseguir que la FT813 responda con la libreria GD2, pero si con los ejemplos base de FTDI, quiero hacer funcionar el lector SD y verificar como funciona la app para reproducir videos!!!.

Por cierto, para conseguir mejores resultados conecta el lector microSD, al mismo bus SPI de la pantalla FT, he notado que al usar al SPI normal del Due luego de un tiempo las imagenes se corrompen, traté acortando los cables pero no funciona, deben ser 11, 12 y 13 forzozamente.

Solo la instalación para Phyton 27 del GD2asset permite convertir los archivos de audio. La básica para windows solo sirve para arreglos de imagenes. Es posible que la instalación para linux si funcione para convertir audio en el formato que se necesita.

PD: se podría experimentar con los programas de conversión de audio que sugiere FTDI.

lightcalamar

Por cierto, para conseguir mejores resultados conecta el lector microSD, al mismo bus SPI de la pantalla FT, he notado que al usar al SPI normal del Due luego de un tiempo las imagenes se corrompen, traté acortando los cables pero no funciona, deben ser 11, 12 y 13 forzozamente.
Tienes razón. Esto me paso varias veces y tener que formatear la SD.
Usando Arduino MEGA, la pantalla la tengo en los pin´s 51,52,53 y el lector en el conector ISCP y experimentaré de tenerlo todos juntos.

Descargue las aplicaciones de herramientas de FTDI de conversiones y sin llegar a probarlas. Lo tendré en cuenta. En cuanto terminé de ponerle el audio, experimentaré entonces con Arduino DUE. Sobre el audio según la DataSheet que viene con su esquemas, creo en un principio, no deja de ser una etapa de BF con un filtro de tercer orden a su entrada y no habrá problemas, es una etapa solo, ya le tengo realizado uno con un LM386 para probar.

Acabo de revisar las nuevas pantallas y son;  5" Graphical LCD capacitive touch screen, 800x480, SPI, FT811



Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

TFTLCDCyg

...Acabo de revisar las nuevas pantallas y son;  5" Graphical LCD capacitive touch screen, 800x480, SPI, FT811
Esos ejemplos que sugieren como usar la pantalla me dan mucho que pensar, creo que por un rato tendremos que estar sumergidos en las instrucciones originales de FTDI para arduino.

Lo mismo ha hecho Riverdi con sus FT81x.

Go Up