Go Down

Topic: 2.4" TFT LCD Shield pantalla blanca (Read 2471 times) previous topic - next topic

Ega6226

May 15, 2017, 07:03 pm Last Edit: May 15, 2017, 10:22 pm by surbyte
Buenas tardes,

primero quería dar un saludo a todo el foro, es mi primera experiencia dentro de él.

Segundo deciros que soy un novato que intenta ayudar a su hijo en un proyecto, llevo varios días buscando una posible solución a este problema, ya he visto que hay bastantes post con este tema, pero ninguno de ellos he encontrado la solución o que realmente yo no doy más de si.

Expongo la situación:

Tenemos esta pantalla, por otro lado tenemos un arduino UNO y otro Mega 2560. Lo ideal sería que funcionase con el Mega ya que el uno se queda si pines.

He probado con todas las librerías que he encontrado, y no hay manera de que la pantalla pase de blanco.

Dentro de la librería MCUFRIEND hay un programa LCD_ID_readreg que me da el siguiente registro:


Code: [Select]
SI⸮⸮5
⸮Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)

reg(0x0000) 95 95 ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 00 00 Manufacturer ID
reg(0x0009) 3F 3F 3F 3F 3F Status Register
reg(0x000A) 00 00 Get Power Mode
reg(0x000C) 01 01 Get Pixel Format
reg(0x0061) 00 00 RDID1 HX8347-G
reg(0x0062) 00 00 RDID2 HX8347-G
reg(0x0063) 00 00 RDID3 HX8347-G
reg(0x0064) 00 00 RDID1 HX8347-A
reg(0x0065) 00 00 RDID2 HX8347-A
reg(0x0066) 00 00 RDID3 HX8347-A
reg(0x0067) 00 00 RDID Himax HX8347-A
reg(0x0070) 00 00 Panel Himax HX8347-A
reg(0x00A1) 00 00 00 00 00 RD_DDB SSD1963
reg(0x00B0) 00 00 RGB Interface Signal Control
reg(0x00B4) 00 00 Inversion Control
reg(0x00B6) 00 00 00 00 00 Display Control
reg(0x00B7) 00 00 Entry Mode Set
reg(0x00BF) 00 00 00 00 00 00 ILI9481, HX8357-B
reg(0x00C0) 00 00 00 00 00 00 00 00 00 Panel Control
reg(0x00C8) 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA
reg(0x00CC) 00 00 Panel Control
reg(0x00D0) 00 00 00 Power Control
reg(0x00D2) 00 00 00 00 00 NVM Read
reg(0x00D3) 00 00 00 00 ILI9341, ILI9488
reg(0x00D4) 00 00 00 00 Novatek ID
reg(0x00DA) 00 00 RDID1
reg(0x00DB) 00 00 RDID2
reg(0x00DC) 00 00 RDID3
reg(0x00E0) 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 GAMMA-P
reg(0x00E1) 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 GAMMA-N
reg(0x00EF) 14 14 14 14 14 14 ILI9327
reg(0x00F2) 08 08 08 08 08 08 08 08 08 08 08 08 Adjust Control 2
reg(0x00F6) 00 00 00 00 Interface Control


Mucha gracias

surbyte

Bueno, bienvenido al foro arduino.

No dices que librerías has usado pero en todas debes hacer algo que no siempre esta claro.
Y es decirle que driver estas usando en tu TFT.
En tu caso es SSD1963
Asi que busca en la librería y puntualmente la que tiene extensión .h y encontraras algo como driver o controlador y donde leas SSD1963 debes descomentarlo y comentar el que esta sin //

Eso hará que se active lo necesario para que funcione.
Cuando des mas datos de la librería que usas podremos puntualizar mejor la respuesta.


TFTLCDCyg

#2
May 16, 2017, 01:36 am Last Edit: May 16, 2017, 01:44 am by TFTLCDCyg
Esas pantallas las han construido con varios chip-driver, y ya son items maduros hablando en términos de vida de producto.

Sin embargo hay controladores compatibles: ILI9341, ILI9325C, ILI9325D, tendrás que hallar el correcto dentro de la documentación de la librería, lo ideal sería que le pidieras al vendedor la librería y un ejemplo de uso. (Esto último es bastante complicado ya que por lo general solo venden los productos, pero no se preocupan por aprender su funcionamiento)

Mira este post:  MCUFRIEND_kbv Library for Uno 2.4, 2.8, 3.5, 3.6, 3.95 inch mcufriend Shield

Esta librería quizás te ayude:  TFT LCD Touch 2.4" Shield para Arduino MEGA

Alguna vez la usé pero ya hace un buen rato, sin embargo acá está la prueba de que funciona:
Shield TFT 2.4" en arduino MEGA

Tienes una pantalla bastante fácil de manejar, algo lenta en el procesamiento de imagenes, pero funcional. Mi primer sugerencia es que empieces por borrar todas las librerías que has usado previamente para que no fallen los nuevos experimentos.

Ega6226

Buenos días,

gracias a los dos por contestar tan rápido.

Efectivamente, el vendedor debería indicar cual es controlador y librerías que usa, eso fue lo primero que hice, sin respuesta de momento.

Sí, es lo que suelo hacer, tengo una carpeta con las librerías originales y cuando ya he probado varias las vuelvo a dejar limpias.

Ayer a última hora conseguí encontrar el controlador (prueba y error), aunque no es ninguno de los que había probado, bueno más bien creo que es el ID (0x7575) aunque no sé si corresponde al HX8347G.

Encontré esta página, allí en uno de los ejemplos (spfd5408_graphicstest) modifique el código:


Code: [Select]


// Code changed to works
 
  tft.begin(0x9341); // SDFP5408 --> Original

  tft.begin(0x7575); // SDFP5408 --> Cambio



Y empezó a hacer el Test.  ;D

¿Es correcto la relación 0x7575 con HX8347G? Alguna librería especial para él.

Gracias


Ega6226

Buenas noches,

he empezado a probar los diferentes ejemplos para poder entender un poco más cómo funciona.

Hay un ejemplo de calibración que no funciona cómo debiera. En la pantalla aparece todo correcto (Textos de distintos tamaños y colores), lo primero que ha que hacer es tocar la pantalla para empezar, esto lo hace bien. A continuación aparece un punto blanco en el borde superior izquierdo, al cual hay que pulsar.

Pues por más que le pulso nada, si pulso en el superior derecha me lo admite, a continuación me sale otro punto en la inferior derecha, este si funciona. Supongo que habrá que modificar algún parámetro del código para ajustar la pantalla de 2.4".

Este es parte del código donde aparecen esas variables:

Code: [Select]
#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>     // Touch library

// Calibrates value
#define SENSIBILITY 300
#define MINPRESSURE 10
#define MAXPRESSURE 1000

//These are the pins for the shield!
#define YP A1
#define XM A2
#define YM 7 
#define XP 6

/*
//Macros replaced by variables
#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940
*/
short TS_MINX=150;
short TS_MINY=120;
short TS_MAXX=920;
short TS_MAXY=940;

// Init TouchScreen:

TouchScreen ts = TouchScreen(XP, YP, XM, YM, SENSIBILITY);

// LCD Pin

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4 // Optional : otherwise connect to Arduino's reset pin

// Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

// Init LCD

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

// Dimensions

uint16_t width = 0;
uint16_t height = 0;

// Buttons

#define BUTTONS 3
#define BUTTON_CLEAR 0
#define BUTTON_SHOW 1
#define BUTTON_RESET 2
..........


Sí, necesitáis algún dato más me lo comentáis.

gracias

edukoski

Estimado EGA6226,
Podrías detallar mejor como fue que resolviste que te anduviera el TFT yo he transitado el mismo camino que tu y no he podido salir de la pantalla BLANCA.

Es más probé con la libreria ADAFRUIT ILI9341 y me realice el test sin errores pero en la pantalla nada, solo BLANCO.
Ya he probado cuanta libreria y nada creo que es un tema del controlador o driver que no sé resolver.

Lo he probado en linux y en win y nada.

Go Up