Boa noite

   Tenho um projeto onde utilizo um display iil9341. 

   Um projeto concluído inclusive a nível de programação.
   Porém, me deparo com um problema com o display...

   Se eu desligo a alimentação, ao re-ligar vem apenas tela branca.

   Depurando através do serial vejo que todo o processamento ocorre normalmente. Porém, o display com tela branca.

   Para ele retornar a mostrar a tela normalmente, preciso ficar ligando e desligando ele até que em um determinado momento ele retorna e se eu não desligar mais, ele fica normal eternamente.

   O que já fiz :

  - Troquei fonte   ( 5v/10A)
  - Troquei processador e arduino
  - Troquei o display!!

  E nada resolve ...

   Uso as seguintes configurações :

#define TFT_DC 9
#define TFT_CS 10
#define TFT_MOSI 11
#define TFT_CLK 13

  Os pinos do display são conectados a essas portas através de resistores de 1K e já experimentei até ligando direto sem os resistores.

  Alguém já passou por esse mistério?  Será que tem algum detalhe nesse display que possa provocar isso ?

   Agradeço desde já qualquer ajuda.

  

Exibições: 885

As respostas para este tópico estão encerradas.

Respostas a este tópico

   Parabéns José Augusto, matou o problema !!!  RS

   Nem acredito que apareceu uma solução pra essa encrenca.

   Era exatamente isso.  Parti pro método do curto circuito no Jumper e pronto!
   
   Agora vou comprar o módulo e colocar nele por ser mais recomendável.

  Já liguei e desliguei dezenas de vezes e acabou-se o problema. 
   Muito obrigado a você e a todos que participaram  desse tópico no intuito de ajudar.

De nada César,

Estamos aqui para ajudar os colegas. 

Uma sugestão :

Quando for abrir um tóipco, envie todas as informações sobre o seu projeto. 

Links, fotos, datasheets. Isso facilitará a nossa ajuda. 

Meu nome é José Gustavo. 

 Desculpe pelo erro em seu nome.

  Abs

olá Cesar.

      Vc não postou nenhuma figura mostrando as conexões entre o Arduino e a placa do Display (o Arduino acredito ser o UNO embora vc também nada tenha mencionado sobre isso).

      Mas pela descrição no seu post inicial, e pelo que está no código que vc postou aqui (o "teste_display.ino"), aparentemente vc  não conectou  ao Arduino  os pinos "RESET" e "MISO" do Display.  No caso do pino "MISO" do Display, até acredito que vc tenha conectado, embora não tenha sido especificado no seu código.  Estes dois pinos são evidenciados na figura a seguir:

(clique na figura para "zoom")

      Se vc não conectar o pino "MISO" do Display, o código da Biblioteca não conseguirá ler informações do controlador IIL9341.

      Se vc não conectar o pino "RESET" do Display,  não será possível fazer um Reset por Hardware no controlador IIL9341, ou seja, não haverá garantia de que o IIL9341 foi resetado (isto é necessário para que ele inicialize corretamente seus circuitos e esteja pronto para receber comandos).

      Veja, quando vc chama o "tft.begin()" na função "setup" do Arduino, ela verifica se vc informou qual o pino "RESET", e caso vc não tenha informado (que é o caso do seu código) então ela automaticamente  faz um "Soft-RESET" através de um comando para o IIL9341. Mas não há garantia de que o "Soft-RESET" sempre funcione, principalmente depois do Sistema ter sido ligado.  E quando vc informa qual o pino usado para o "RESET",  o "tft.begin()"  automaticamente  faz o RESET por Hardware.

      Então para garantir que o IIL9341 seja efetivamente resetado após o Sistema ter sido ligado, é sensato usar um RESET por Hardware,  justamente através do pino "RESET" do Display.  Para isso vc deve conectar o pino "RESET" do Display a um pino do Arduino, e informar esse pino como mostrado na figura a seguir, que também mostra a declaração do pino "MISO"  e dos demais pinos da Interface com o IIL9341:

(clique na figura para "zoom")

      Garanta a conexão dos pinos "RESET" e "MISO" do Display  ao Arduino. Para o "RESET"  vc pode usar qualquer pino digital do Arduino que esteja "sobrando", ou seja, não precisa ser o pino "8".  Mas para o pino "MISO", vc deve usar obrigatoriamente  o pino "12", pois ele é da Interface SPI do Hardware.

      Ajustei seu código de testes, informando todos os pinos,  e vc pode usá-lo para seus testes desligando e religando o Sistema. É este aqui:   "teste_Display_02.zip"

      Não se esqueça de alterar no código, o número do pino usado para o "RESET", caso vc use outro diferente do "8".

      No Hardware,  para o "MISO",  vc  não deve usar  o Resistor de 1k  que vc mencionou no seu post inicial. Mas para o "RESET" use o Resistor da mesma forma que usou para os demais pinos da Interface.

      Espero ter ajudado,

      Abrçs

      Elcids

ah sim:

       para o "RESET", ao invés do Resistor de 1k, é preferível usar um de 330 ohms, para garantir o nivel lógico "0" para o RESET por Hardware,  pois pode haver na placa do Display um resistor de pullup de baixo valor já conectado ao sinal "RESET".

  Bom dia Elcides,

    O MISO está ligado fisicamente, mas eu não defini ele em código e realmente esse pino recebe ligação direta sem o resistor.
   Quanto ao RESET, eu vi diversas formas de exemplos para ele. Com resistor e ligado direto ao Vcc

   No meu caso, funcionou em ambas as formas mas acabei adotando a ligação direta ao Vcc. 

   No meu problema narrado em específico, o José augusto matou o problema, com a questão do jumper que tem na parte de trás desse display.
   Agradeço muito a ajuda de todos.

Pode ser muita coisa, inclusive relacionado a algum momento do fluxo do código em determinada condição. Também tem a questão da biblioteca. Se você precisa desenhar tipos primitivos, recomendo a TFT_eSPI. Se quer widgets para desenhar janelas, recomendo a LVGL. Parta de um teste padrão, um "hello world" do display, daí fica mais fácil depurar.

Vou deixar alguns links do que fiz sobre esse display maravilhoso :)

Calibração e cores:

https://www.dobitaobyte.com.br/display-ili9341-touch/

Usando a TFT_eSPI:
https://www.dobitaobyte.com.br/ili9341-com-tft_espi-na-afsmartcontrol/

IHM com ILI9341:
https://www.dobitaobyte.com.br/ihm-com-esp32-e-display-ili9341/

Como fazer uma tela de login com LVGL:
https://www.dobitaobyte.com.br/como-fazer-uma-tela-de-login-com-lvgl/

Primeiros passos com LVGL:
https://www.dobitaobyte.com.br/primeiros-passo-com-lvgl-no-esp32/

Projeto de misturador de cores que fiz com esse display:
https://www.dobitaobyte.com.br/misturador-de-cores-cmyk-com-esp32-diy/

Vídeo de apresentação e configuração com a TFT_eSPI:
https://youtu.be/i_Rhfc3lWBk

Vídeo do misturador de cores:
https://www.youtube.com/watch?v=gJ1YhclQalE

Vídeo de como criar a tela de login com LVGL:
https://youtu.be/zOsQgzBvKxo

Como usar LVGL usando VS Code pra programar:
https://youtu.be/k0CM0VSeLYY

Design de projeto com LVGL:
https://youtu.be/54jMr8fhLIM

Apresentação do IHM com LVGL:

https://youtu.be/LFL5vYGF3yw

Acho que deve ajudar bastante.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço