ESP32 - Display TFT LCD Touch ILI9341 ILI9488 ST7789 com Interface SPI
Vamos construir um projeto que dá vida a um display TFT SPI colorido em um ESP32. O ESP32 é um microcontrolador dual-core poderoso, com Wi-Fi, Bluetooth e muitos GPIOs - e o seu barramento SPI de hardware VSPI facilita rodar um display TFT de alta velocidade nas taxas que o painel suporta.
O que vamos construir:
- Uma conexão com fios entre um ESP32 e um display TFT SPI.
- Uma demonstração de formas usando a API de desenho Adafruit GFX.
- Um exemplo de exibição de texto e números.
- Um visualizador de imagens bitmap que lê da memória de programa (PROGMEM).
- Um visualizador de imagens bitmap que lê imagens de um cartão SD.
- Uma demonstração de fonte externa personalizada.
- Um leitor de coordenadas de toque usando um controlador XPT2046.
- Um aplicativo de desenho por toque (pintura com o dedo na tela).
- Uma interface interativa de botões touch.
- Uma ferramenta de calibração da tela touch.
- Um exemplo de barramento SPI personalizado usando o HSPI do ESP32.
Este projeto aborda displays TFT LCD SPI com e sem touch. Ele funciona com painéis de 1.3, 1.54, 2.2, 2.4, 2.8, 3.2 e 3.5 polegadas controlados pelos chips ILI9341, ILI9488 ou ST7789.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
O Que É o Display TFT SPI?
Um módulo TFT SPI combina um LCD colorido com um CI controlador que aceita comandos de desenho por um barramento SPI de 4 fios. A biblioteca suporta três chips comuns:
- ILI9341 - cores RGB565 de 16 bits, SPI de até 40 MHz.
- ILI9488 - cores RGB666 de 18 bits via SPI, até 24 MHz.
- ST7789 - cores RGB565 de 16 bits, SPI de até 40 MHz.
Recomendação: Se você ainda não comprou um display, recomendamos o controlador ST7789. Ele é fácil de encontrar, funciona com a velocidade SPI total de 40 MHz e é a escolha mais simples para novos projetos.
O desenho é feito pela API Adafruit GFX, que inclui formas, texto, fontes personalizadas e saída de bitmaps.
Observação: O ESP32 usa lógica de 3.3V. A maioria dos módulos TFT SPI funciona com 3.3V. Verifique a especificação de tensão do seu módulo antes de fazer a ligação.
Pinagem
A maioria dos displays TFT LCD SPI tem os seguintes pinos:
Pinos do display:
| Pino | Função |
|---|---|
| VCC | Alimentação |
| GND | Terra |
| CS | Chip Select — colocado em nível baixo para selecionar o display no barramento SPI |
| DC / RS | Seleção de Dado / Comando — nível alto para dados de pixel, nível baixo para comandos |
| RST | Reset por hardware — opcional; ligue ao 3.3V se não for usado |
| MOSI / SDI / SDA | Entrada de dados SPI (MCU → display) |
| SCK / CLK | Clock SPI |
| MISO / SDO | Saída de dados SPI (display → MCU) — opcional para uso apenas como display |
| LED / BL / BLK | Alimentação da luz de fundo — conecte ao 3.3V ou a um pino PWM para controlar o brilho |
Pinos do cartão SD (se a sua aplicação precisar acessar o cartão SD):
| Pino | Função |
|---|---|
| SD_CS / TF_CS | Chip Select do cartão SD |
| MOSI / SDI | MOSI — dados do MCU para o cartão SD |
| SCK / CLK | SCK — clock SPI |
| MISO / SDO | MISO — dados do cartão SD para o MCU |
Nos displays TFT que suportam touch, há pinos de toque adicionais (se a sua aplicação usar a função de toque e o display a suportar):
| Pino | Função |
|---|---|
| T_CS | Chip Select do controlador de toque |
| T_CLK | SCK — clock SPI |
| T_DIN | MOSI — dados do MCU para o controlador de toque |
| T_DO | MISO — dados do controlador de toque para o MCU |
| T_IRQ | Interrupção de toque — opcional; sinaliza quando a tela está sendo tocada |
Observação: Alguns módulos de display sem touch também têm os pinos T_CS, T_CLK, T_DIN, T_DO e T_IRQ. Eles não funcionam nessas placas — o CI controlador de toque não está montado. Eles aparecem porque a PCB reutiliza o mesmo layout da versão com touch para reduzir as variações de fabricação.

Diagrama de Ligação
Observação — o SDO (MISO) é opcional: A linha SDO (MISO) só transporta dados do display de volta para a placa. Nenhum dos códigos de exemplo deste tutorial lê dados do display, então este pino pode ficar desconectado. Em módulos em que o controlador de toque compartilha o mesmo barramento SPI, uma linha SDO conectada pode interferir na comunicação, por isso é recomendável deixá-la desconectada.
Sem Touch
Conecte o MOSI ao GPIO23, o SCK ao GPIO18 e o MISO ao GPIO19 do ESP32. CS, DC e RST podem usar qualquer GPIO disponível — GPIO5, GPIO2 e GPIO4 são usados nos exemplos.
Display:
| Pino do TFT | Pino do ESP32 | Descrição |
|---|---|---|
| VCC | 3.3V | Alimentação (somente 3.3V) |
| GND | GND | Terra |
| CS | GPIO5 | Chip Select |
| DC / RS | GPIO2 | Seleção de Dado / Comando |
| RST | GPIO4 | Reset (opcional) |
| MOSI / SDI | GPIO23 | MOSI do SPI de hardware (VSPI) |
| SCK | GPIO18 | Clock do SPI de hardware (VSPI) |
| MISO / SDO | GPIO19 | MISO do SPI de hardware (VSPI, opcional) |
| LED / BL | 3.3V | Alimentação da luz de fundo |
Cartão SD (se a sua aplicação precisar acessar o cartão SD):
| Pino do SD | Pino do ESP32 | Descrição |
|---|---|---|
| SD_CS / TF_CS | qualquer GPIO livre | Chip Select do cartão SD |
| MOSI / SDI | GPIO23 | Compartilhado com o MOSI do display (GPIO23) |
| SCK / CLK | GPIO18 | Compartilhado com o SCK do display (GPIO18) |
| MISO / SDO | GPIO19 | Compartilhado com o MISO do display (GPIO19) |

This image is created using Fritzing. Click to enlarge image
Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.
Observação: O diagrama acima mostra a ligação correta. Na prática, não é fácil conectar dois fios no mesmo furo do header de pinos do ESP32. Uma solução prática é usar uma placa breakout com bornes de parafuso para ESP32 — dois fios podem ser presos no mesmo borne de parafuso, ou um fio no borne e outro no pino do header ao lado.

This image is created using Fritzing. Click to enlarge image
Com Touch
Conecte o controlador de toque XPT2046 ao barramento VSPI do ESP32, compartilhando o GPIO23, o GPIO18 e o GPIO19 com o display.
Display:
| Pino do TFT | Pino do ESP32 | Descrição |
|---|---|---|
| VCC | 3.3V | Alimentação (somente 3.3V) |
| GND | GND | Terra |
| CS | GPIO5 | Chip Select |
| DC / RS | GPIO2 | Seleção de Dado / Comando |
| RST | GPIO4 | Reset (opcional) |
| MOSI / SDI | GPIO23 | MOSI do SPI de hardware (VSPI) |
| SCK | GPIO18 | Clock do SPI de hardware (VSPI) |
| MISO / SDO | GPIO19 | MISO do SPI de hardware (VSPI, opcional) |
| LED / BL | 3.3V | Alimentação da luz de fundo |
Controlador de toque (se a sua aplicação usar a função de toque e o display a suportar):
| Pino de Toque | Pino do ESP32 | Descrição |
|---|---|---|
| T_CS | qualquer GPIO livre | Chip Select do toque |
| T_IRQ | qualquer GPIO livre | Interrupção de toque (opcional) |
| T_DIN | GPIO23 | Compartilhado com o MOSI do display (GPIO23) |
| T_CLK | GPIO18 | Compartilhado com o SCK do display (GPIO18) |
| T_DO | GPIO19 | Compartilhado com o MISO do display (GPIO19) |

This image is created using Fritzing. Click to enlarge image
Observação: O diagrama acima mostra a ligação correta. Na prática, não é fácil conectar dois fios no mesmo furo do header de pinos do ESP32. Uma solução prática é usar uma placa breakout com bornes de parafuso para ESP32 — dois fios podem ser presos no mesmo borne de parafuso, ou um fio no borne e outro no pino do header ao lado.

This image is created using Fritzing. Click to enlarge image
Se o seu MCU tem duas ou mais interfaces SPI de hardware, você pode atribuir cada periférico (display, cartão SD, controlador de toque) a um barramento SPI dedicado. Se o seu MCU tem apenas uma interface SPI de hardware, os três periféricos compartilham as mesmas três linhas de dados (MOSI, SCK, MISO) — no ESP32, elas são o GPIO23, o GPIO18 e o GPIO19. Cada periférico tem o seu próprio pino CS, então apenas um fica ativo por vez. A biblioteca DIYables_TFT_SPI gerencia tanto o display quanto o controlador de toque XPT2046 por meio de uma única API — não é necessária uma biblioteca SPI separada para a parte de toque.
Instalação da Biblioteca
- Conecte a placa ESP32 ao seu computador pela porta USB-C.
- Abra a Arduino IDE. Selecione a variante da sua placa ESP32 no menu de placas e escolha a porta COM correta.
- Abra o painel Libraries.
- Pesquise "DIYables_TFT_SPI". Localize a entrada da DIYables.
- Clique em Install e aceite a instalação de todas as dependências.
- Search for DIYables TFT SPI created by DIYables.io and click the Install button.
Base do Projeto
O sketch base para todo projeto TFT com ESP32 usando esta biblioteca:
Mãos à Obra - Desenhar Formas
O exemplo DrawShapes desenha toda a variedade de formas básicas da Adafruit GFX: círculos, triângulos, retângulos, retângulos arredondados e linhas.
Carregar e Testar
- Ligue o módulo TFT ao ESP32 usando a tabela acima.
- Conecte o cabo USB-C.
- Na Arduino IDE, selecione a placa e a porta, cole o código e clique em Upload.
- Depois do upload, o display é preenchido com uma sequência repetida de formas coloridas.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| begin() | Inicializa o display. | TFT_display.begin(); |
| setRotation(r) | Define a orientação da tela de 0 a 3. | TFT_display.setRotation(1); |
| fillScreen(color) | Preenche a tela inteira com uma cor. | TFT_display.fillScreen(BLACK); |
| colorRGB(r,g,b) | Cria um valor de cor de 16 bits. | colorRGB(255,128,0) |
| fillCircle(x,y,r,color) | Círculo preenchido. | TFT_display.fillCircle(120,160,60,RED); |
| fillRect(x,y,w,h,color) | Retângulo preenchido. | TFT_display.fillRect(0,0,100,50,BLUE); |
| drawLine(x0,y0,x1,y1,color) | Linha reta entre dois pontos. | TFT_display.drawLine(0,0,320,240,WHITE); |
Mãos à Obra - Mostrar Texto e Número
O exemplo ShowTextAndNumber usa o mecanismo de texto da Adafruit GFX para imprimir strings e valores numéricos com tamanhos e cores ajustáveis.
Carregar e Testar
- Faça a ligação e o upload como acima.
- O display mostra várias linhas de texto e números em cores e tamanhos diferentes.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| setTextColor(color) | Define a cor do texto. | TFT_display.setTextColor(WHITE); |
| setTextSize(size) | Aumenta o texto. Tamanho 1 = 6×8 px, tamanho 2 = 12×16 px. | TFT_display.setTextSize(2); |
| setCursor(x, y) | Coloca o cursor de texto no pixel (x, y). | TFT_display.setCursor(10, 20); |
| print(value) | Imprime uma string ou um número na posição do cursor. | TFT_display.print("ESP32!"); |
| println(value) | Imprime e avança o cursor para a próxima linha. | TFT_display.println(42); |
Mãos à Obra - Desenhar Imagem
Vamos construir um visualizador de imagens. O exemplo DrawImage carrega um bitmap RGB565 colorido da memória flash de programa do ESP32 e o mostra no display. Os dados dos pixels são declarados no bitmap.h como um array const uint16_t com PROGMEM. No ESP32, os dados em PROGMEM são mapeados da flash para o espaço de endereçamento virtual, então a imagem é desenhada sem consumir nenhuma RAM do heap.
Copie o bitmap.h para a pasta do sketch antes de compilar.
Carregar e Testar
- Coloque o bitmap.h na mesma pasta do sketch.
- Ligue o módulo TFT ao ESP32 como mostrado acima (MOSI=GPIO23, SCK=GPIO18, MISO=GPIO19, CS=GPIO5, DC=GPIO2, RST=GPIO4). Use 3.3V no VCC.
- Conecte o cabo USB-C.
- Na Arduino IDE, selecione a placa e a porta e clique em Upload.
- O display mostra a imagem bitmap da memória flash.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| drawRGBBitmap(x,y,bitmap,w,h) | Desenha um bitmap RGB565 em PROGMEM com o canto superior esquerdo em (x, y). | TFT_display.drawRGBBitmap(0, 0, myImage, 240, 320); |
| fillScreen(color) | Limpa o display antes de desenhar a imagem. | TFT_display.fillScreen(BLACK); |
Mãos à Obra - Desenhar Imagem do Cartão SD
Vamos construir um visualizador de imagens do cartão SD. O exemplo DrawImageSDcard lê uma imagem binária RGB565 bruta de um cartão micro SD e envia os dados dos pixels para o display em blocos. O ESP32 controla tanto o cartão SD quanto o display no mesmo barramento VSPI, alternando as linhas CS para decidir com qual deles se comunicar.
Ligue o módulo SD ao GPIO23 (MOSI), GPIO18 (SCK) e GPIO19 (MISO). Defina um pino CS separado para o módulo SD como SD_CS_PIN no sketch.
Carregar e Testar
- Ligue o módulo SD ao barramento VSPI do ESP32. Compartilhe os GPIO23/18/19 com o display. Conecte o CS do SD ao pino definido como SD_CS_PIN.
- Copie um arquivo de imagem binária RGB565 bruta para a raiz do cartão SD. As dimensões devem corresponder ao seu painel.
- Conecte o cabo USB-C.
- Na Arduino IDE, selecione a placa e a porta e clique em Upload.
- O display mostra a imagem enviada do cartão SD.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| startWrite() | Abre uma sessão de escrita SPI direta e ativa o CS do display. | TFT_display.startWrite(); |
| setAddrWindow(x0,y0,x1,y1) | Define a região retangular de escrita de pixels no painel. | TFT_display.setAddrWindow(0, 0, 239, 319); |
| pushColors(buf, len) | Envia um buffer de valores de pixel RGB565 para o display. | TFT_display.pushColors(buf, 512); |
| endWrite() | Fecha a sessão SPI e libera o CS do display. | TFT_display.endWrite(); |
Mãos à Obra - Usar Fonte Externa
Vamos construir uma exibição de texto personalizada. O exemplo UseExternalFont substitui a fonte padrão de 5×7 pixels por uma fonte vetorial mais nítida, compatível com a Adafruit GFX. Basta uma chamada a setFont() para melhorar a tipografia. Chamar setFont(NULL) restaura a fonte embutida original a qualquer momento.
Carregar e Testar
- Ligue o módulo TFT ao ESP32 como mostrado acima.
- Conecte o cabo USB-C.
- Na Arduino IDE, selecione a placa e a porta e clique em Upload.
- O display mostra o texto com a fonte personalizada.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| setFont(&FontName) | Ativa uma fonte personalizada compatível com GFX. Passe NULL para restaurar a fonte embutida de 5×7. | TFT_display.setFont(&FreeSans12pt7b); |
| setCursor(x, y) | Posiciona o cursor de texto na coordenada de pixel indicada. | TFT_display.setCursor(10, 40); |
| setTextColor(color) | Define a cor do texto seguinte. | TFT_display.setTextColor(WHITE); |
| print(text) | Imprime uma string na posição do cursor usando a fonte ativa. | TFT_display.print("ESP32 Project"); |
Mãos à Obra - Obter Ponto de Toque
Vamos construir um leitor de coordenadas de toque. O exemplo TouchGetPoint inicializa o XPT2046 no barramento VSPI do ESP32 e imprime os valores brutos do ADC no Serial Monitor sempre que a tela é pressionada. Este é o primeiro passo para um projeto com touch: entender a faixa de valores brutos que o seu painel produz.
Ligação (todos os sinais em 3.3V):
| Pino de Toque | Pino do ESP32 | Descrição |
|---|---|---|
| T_CLK | GPIO18 | SCK — compartilhado com o display |
| T_DIN | GPIO23 | MOSI — compartilhado com o display |
| T_DO | GPIO19 | MISO — compartilhado com o display |
| T_CS | GPIO15 | Chip Select do toque |
| T_IRQ | GPIO27 | Interrupção de toque (opcional) |
Carregar e Testar
- Ligue o XPT2046 ao barramento VSPI do ESP32, compartilhando os GPIO23/18/19 com o display. T_CS→GPIO15, T_IRQ→GPIO27.
- Conecte o cabo USB-C.
- Na Arduino IDE, selecione a placa e a porta e clique em Upload.
- Abra o Serial Monitor em 9600 baud. Toque no display para ver os valores brutos de X, Y e Z impressos.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| initTouchSPI(cs, irq) | Inicializa o XPT2046 no barramento SPI compartilhado. Passe -1 em irq se o pino de interrupção não estiver conectado. | TFT_display.initTouchSPI(14, 27); |
| readTouchRaw(x, y, z) | Retorna os valores brutos do ADC do controlador, sem calibração. Retorna true quando a tela está pressionada. | TFT_display.readTouchRaw(x, y, z); |
Mãos à Obra - Desenho por Toque
Vamos construir um aplicativo de pintura com o dedo. O exemplo TouchDraw combina o controlador de toque XPT2046 com a API de desenho do display. Cada posição de toque é convertida em uma coordenada de pixel calibrada, e um pequeno círculo preenchido é desenhado ali, criando um traço conforme o dedo se move.
Carregar e Testar
- Ligue o XPT2046 ao ESP32 como descrito na seção Obter Ponto de Toque acima.
- Conecte o cabo USB-C.
- Na Arduino IDE, selecione a placa e a porta e clique em Upload.
- Arraste o dedo pelo display para pintar na tela.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| initTouchSPI(cs, irq) | Inicializa o XPT2046 no barramento VSPI compartilhado. | TFT_display.initTouchSPI(14, 27); |
| setTouchCalibration(minX,maxX,minY,maxY) | Converte os valores brutos do ADC em coordenadas de pixel da tela. Obtenha os quatro valores com o exemplo TouchCalibration. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Inverte o eixo de toque quando X ou Y está espelhado no seu painel ou lote específico. Chame ANTES de setTouchCalibration(). | TFT_display.setTouchInvertY(true); |
| getTouch(x, y) | Retorna as coordenadas de toque calibradas em pixels da tela. Retorna true enquanto a tela está pressionada. | if (TFT_display.getTouch(x, y)) { ... } |
| fillCircle(x, y, r, color) | Desenha um pequeno ponto na posição do toque para formar a pintura. | TFT_display.fillCircle(x, y, 3, RED); |
Mãos à Obra - Botão Touch
Vamos construir um painel de botões touch. O exemplo TouchButton desenha botões retangulares como regiões coloridas no display e depois verifica as coordenadas de toque a cada iteração do loop. Quando um ponto de toque cai dentro dos limites de um botão, o botão é destacado e a ação é executada. Este é o padrão básico de qualquer interface touch com ESP32.
O T_IRQ é opcional. Passe -1 como argumento irq para usar o modo de verificação contínua (polling) sem o pino de interrupção.
Carregar e Testar
- Conecte o T_CS ao GPIO15. O T_IRQ pode ficar desconectado.
- Conecte o cabo USB-C.
- Na Arduino IDE, selecione a placa e a porta e clique em Upload.
- Toque em cada botão no display e confirme que ele é destacado e executa sua ação.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| initTouchSPI(cs, irq) | Inicializa o XPT2046. Passe -1 em irq para desativar o pino de interrupção. | TFT_display.initTouchSPI(14, -1); |
| setTouchCalibration(minX,maxX,minY,maxY) | Aplica a calibração para que getTouch() retorne coordenadas de pixel precisas. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Inverte o eixo de toque quando X ou Y está espelhado no seu painel ou lote específico. Chame ANTES de setTouchCalibration(). | TFT_display.setTouchInvertY(true); |
| getTouch(x, y) | Obtém a posição de toque calibrada atual. Retorna true enquanto está pressionada. | if (TFT_display.getTouch(x, y)) { ... } |
| fillRect(x, y, w, h, color) | Desenha um botão como um retângulo preenchido. | TFT_display.fillRect(10, 10, 120, 60, BLUE); |
Mãos à Obra - Calibração do Toque
Vamos construir uma ferramenta de calibração. O exemplo TouchCalibration guia você na medição dos valores extremos brutos do ADC do seu painel XPT2046. Toque em cada canto do display quando solicitado e anote os valores mínimos e máximos de X e Y impressos. Esses quatro números são as constantes de setTouchCalibration() em todos os outros projetos com touch.
Carregar e Testar
- Ligue o XPT2046 ao ESP32 como descrito na seção Obter Ponto de Toque.
- Conecte o cabo USB-C.
- Na Arduino IDE, selecione a placa e a porta e clique em Upload.
- Abra o Serial Monitor em 9600 baud. Siga as instruções na tela e toque em cada canto.
- Anote os quatro valores impressos e use-os em setTouchCalibration() nos seus outros projetos com touch.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| initTouchSPI(cs, irq) | Inicializa o controlador de toque XPT2046. | TFT_display.initTouchSPI(14, 27); |
| readTouchRaw(x, y, z) | Lê os valores brutos do ADC para determinar a faixa de calibração. | TFT_display.readTouchRaw(x, y, z); |
| setTouchCalibration(minX,maxX,minY,maxY) | Armazena as constantes de calibração para que getTouch() converta corretamente os valores brutos em coordenadas de pixel. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Inverte o eixo de toque quando X ou Y está espelhado no seu painel ou lote específico. Chame ANTES de executar a calibração para que os valores armazenados correspondam ao seu painel. | TFT_display.setTouchInvertY(true); |
Mãos à Obra - SPI Personalizado
Vamos construir em um barramento SPI personalizado. O ESP32 tem dois controladores SPI de hardware: VSPI e HSPI. O exemplo CustomSPI mostra como criar uma instância de SPIClass para o barramento HSPI e passá-la para o construtor do display. Isso libera o barramento VSPI para outros periféricos, como cartões SD ou módulos de sensores que compartilham o SPI.
Carregar e Testar
- Ligue o display TFT aos pinos HSPI do ESP32 ou ao barramento SPI personalizado que você definir no sketch.
- Conecte o cabo USB-C.
- Na Arduino IDE, selecione a placa e a porta e clique em Upload.
- O display inicia no barramento SPI selecionado e mostra um padrão de barras coloridas para confirmar que funcionou.
Referência da API de Desenho
| Método | Finalidade | Uso |
|---|---|---|
| SPIClass myBus(HSPI) | Cria uma instância de SPIClass ligada ao controlador HSPI (GPIO14/12/13/15). | SPIClass HSPI_bus(HSPI); |
| DIYables_ILI9341_SPI(w,h,cs,dc,rst,spi) | Construtor que aceita um ponteiro para qualquer SPIClass. Usa &SPI (VSPI) por padrão quando omitido. | DIYables_ILI9341_SPI tft(240, 320, 5, 2, 4, &HSPI_bus); |
| begin() | Inicializa o display no barramento SPI configurado. | TFT_display.begin(); |
Solução de Problemas
| Problema | Causa | Solução |
|---|---|---|
| Tela em branco | Pinos SPI errados ou alimentação errada | Use os pinos VSPI GPIO23/18/19; verifique se o VCC está em 3.3V |
| Imagem embaralhada | Driver errado ativo | Descomente apenas o construtor correspondente |
| Imagem deslocada | Largura/altura do construtor não correspondem | Ajuste os valores às dimensões reais do seu painel |
| Sem resposta ao toque | Faltam os dados de calibração | Execute o exemplo TouchCalibration e copie os valores impressos |
| Porta não aparece | Falta o driver USB | Instale o driver USB CP210x ou CH340 para a sua placa |
Plataformas Suportadas
A biblioteca é construída sobre a API SPI padrão do Arduino e suporta todas as variantes de ESP32 compatíveis com Arduino (architectures=*).