ESP8266 - Display TFT LCD Touch ILI9341 ILI9488 ST7789 com Interface SPI
Este é um guia prático e direto ao ponto para conectar um display TFT SPI a uma placa ESP8266 NodeMCU. O ESP8266 é um microcontrolador compacto com Wi-Fi que roda a 80-160 MHz e opera em 3,3V. Seu barramento SPI de hardware fica nos GPIO13 (MOSI), GPIO14 (SCK) e GPIO12 (MISO) - note que eles NÃO são rotulados como D11/D13/D12 como nas placas Arduino.
Veja o que vamos cobrir:
- Identificar os pinos SPI corretos no ESP8266 NodeMCU.
- Ligar um display TFT SPI de 3,3V com segurança.
- Desenhar formas e gráficos.
- Exibir texto e números.
- Desenhar imagens bitmap da memória de programa (PROGMEM).
- Desenhar imagens bitmap carregadas de um cartão SD.
- Renderizar texto com uma fonte externa personalizada.
- Ler coordenadas brutas de toque de um controlador XPT2046.
- Desenhar na tela arrastando o dedo.
- Criar botões de toque interativos.
- Calibrar a tela touch.
- Usar um barramento SPI secundário ou personalizado para o display.
Este tutorial cobre 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
| 1 | × | ESP8266 NodeMCU development board | |
| 1 | × | USB Cable (Type-A to Micro-B) | |
| 1 | × | SPI TFT display module | |
| 1 | × | Fios Jumper | |
| 1 | × | (Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266 |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
O Display TFT SPI
Os módulos TFT SPI usam um CI driver dedicado para receber comandos de desenho e controlar os pixels do LCD por um link SPI rápido. Três drivers são suportados:
- ILI9341 - cor RGB565 de 16 bits, SPI de até 40 MHz.
- ILI9488 - cor RGB666 de 18 bits por SPI, até 24 MHz.
- ST7789 - cor RGB565 de 16 bits, SPI de até 40 MHz.
Recomendação: Se você ainda não comprou um display, recomendamos o driver ST7789. Ele é amplamente disponível, roda na velocidade SPI total de 40 MHz e é a escolha mais direta para novos projetos.
As chamadas de desenho passam pela API Adafruit GFX: formas, texto, fontes e bitmaps estão todos disponíveis.
Observação: O ESP8266 opera em 3,3V. Conecte o VCC do TFT ao pino 3,3V. NÃO aplique 5V - isso vai danificar a placa.
Aviso sobre pinos de boot: GPIO0, GPIO2 e GPIO15 afetam o modo de boot do ESP8266. Evite usá-los para CS, DC ou RST do TFT para prevenir falhas de upload. GPIO4, GPIO5 e GPIO16 são escolhas seguras.
Pinagem
A maioria dos displays TFT LCD SPI possui os seguintes pinos:
Pinos do display:
| Pino | Função |
|---|---|
| VCC | Alimentação |
| GND | Terra |
| CS | Chip Select — colocado em LOW para selecionar o display no barramento SPI |
| DC / RS | Seleção de Dados / Comando — HIGH para dados de pixel, LOW para comandos |
| RST | Reset de 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 escurecer |
Pinos do cartão SD (se 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 |
Para displays TFT com suporte a touch, há pinos adicionais de toque (se 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 expõem os pinos T_CS, T_CLK, T_DIN, T_DO e T_IRQ. Eles não funcionam nessas placas — o CI do controlador de toque não está instalado. Eles aparecem porque a PCB reaproveita o mesmo layout da versão com touch para reduzir variantes de fabricação.

Diagrama de Ligação
Observação — SDO (MISO) é opcional: A linha SDO (MISO) apenas leva 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 é recomendado deixá-la desconectada.
Sem Touch
Conecte MOSI ao D7 (GPIO13), SCK ao D5 (GPIO14), MISO ao D6 (GPIO12) no ESP8266 NodeMCU. CS, DC e RST podem ser quaisquer GPIO disponíveis e seguros para boot — D2 (GPIO4), D1 (GPIO5), D0 (GPIO16) são usados nos exemplos.
Display:
| Pino do TFT | Pino do ESP8266 NodeMCU | Número do GPIO | Descrição |
|---|---|---|---|
| VCC | 3V3 | - | Alimentação (somente 3,3V) |
| GND | GND | - | Terra |
| CS | D2 | GPIO4 | Chip Select (seguro para boot) |
| DC / RS | D1 | GPIO5 | Seleção de Dados / Comando (seguro para boot) |
| RST | D0 | GPIO16 | Reset (seguro para boot, opcional) |
| MOSI / SDI | D7 | GPIO13 | MOSI do SPI de hardware |
| SCK | D5 | GPIO14 | Clock do SPI de hardware |
| MISO / SDO | D6 | GPIO12 | MISO do SPI de hardware (opcional) |
| LED / BL | 3V3 | - | Alimentação da luz de fundo |
Cartão SD (se sua aplicação precisar acessar o cartão SD):
| Pino do SD | Pino do ESP8266 NodeMCU | Número do GPIO | Descrição |
|---|---|---|---|
| SD_CS / TF_CS | D8 | GPIO15 | Chip Select do cartão SD (sensível ao boot — veja a observação abaixo) |
| MOSI / SDI | D7 | GPIO13 | Compartilhado com o MOSI do display (D7/GPIO13) |
| SCK / CLK | D5 | GPIO14 | Compartilhado com o SCK do display (D5/GPIO14) |
| MISO / SDO | D6 | GPIO12 | Compartilhado com o MISO do display (D6/GPIO12) |
⚠ Observação sobre o pino de boot (SD_CS): O GPIO15 (D8) deve estar em LOW no boot. Ele é usado para o SD_CS nestes exemplos. Módulos SD padrão têm um resistor de pull-down que satisfaz isso automaticamente. Se os uploads pararem de funcionar depois de adicionar o módulo SD, desconecte o fio do SD_CS e tente novamente.

This image is created using Fritzing. Click to enlarge image
Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.
Com Touch
Conecte o controlador de toque XPT2046 ao barramento SPI do ESP8266 NodeMCU, compartilhando D7 (GPIO13), D5 (GPIO14) e D6 (GPIO12) com o display.
Display:
| Pino do TFT | Pino do ESP8266 NodeMCU | Número do GPIO | Descrição |
|---|---|---|---|
| VCC | 3V3 | - | Alimentação (somente 3,3V) |
| GND | GND | - | Terra |
| CS | D2 | GPIO4 | Chip Select (seguro para boot) |
| DC / RS | D1 | GPIO5 | Seleção de Dados / Comando (seguro para boot) |
| RST | D0 | GPIO16 | Reset (seguro para boot, opcional) |
| MOSI / SDI | D7 | GPIO13 | MOSI do SPI de hardware |
| SCK | D5 | GPIO14 | Clock do SPI de hardware |
| MISO / SDO | D6 | GPIO12 | MISO do SPI de hardware (opcional) |
| LED / BL | 3V3 | - | Alimentação da luz de fundo |
Controlador de toque (se sua aplicação usar a função de toque e o display a suportar):
| Pino de Toque | Pino do ESP8266 NodeMCU | Número do GPIO | Descrição |
|---|---|---|---|
| T_CS | D3 | GPIO0 | Chip Select do toque (sensível ao boot — veja a observação abaixo) |
| T_IRQ | D4 | GPIO2 | Interrupção de toque, opcional (sensível ao boot — veja a observação abaixo) |
| T_DIN | D7 | GPIO13 | Compartilhado com o MOSI do display (D7/GPIO13) |
| T_CLK | D5 | GPIO14 | Compartilhado com o SCK do display (D5/GPIO14) |
| T_DO | D6 | GPIO12 | Compartilhado com o MISO do display (D6/GPIO12) |
⚠ Observação sobre a restrição dos pinos de boot: O ESP8266 tem apenas três GPIOs seguros para boot que não fazem parte do barramento SPI de hardware: GPIO4 (D2), GPIO5 (D1) e GPIO16 (D0). Eles já estão ocupados pelos CS, DC e RST do TFT. Todo pino CS adicional (TOUCH_CS, SD_CS) e o TOUCH_IRQ opcional precisam, portanto, usar um dos pinos sensíveis ao boot:
- GPIO0 / D3 — deve estar em HIGH no boot. Usado para o TOUCH_CS nestes exemplos.
- GPIO2 / D4 — deve estar em HIGH no boot. Usado para o TOUCH_IRQ nestes exemplos.
- GPIO15 / D8 — deve estar em LOW no boot. Usado para o SD_CS nestes exemplos.
Esses pinos são totalmente utilizáveis durante a execução. Os resistores embutidos na placa NodeMCU normalmente satisfazem os requisitos de boot. No entanto, se um módulo acionar ativamente um desses pinos no nível errado durante a energização ou o reset, a placa vai iniciar em modo flash em vez de executar o seu sketch. Se os uploads pararem de funcionar depois de adicionar um módulo de toque ou SD, desconecte o fio CS do módulo e tente o upload novamente; depois reconecte.

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) ao seu próprio 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 ESP8266 elas são D7/GPIO13, D5/GPIO14 e D6/GPIO12. Cada periférico tem 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 uma única API — nenhuma biblioteca SPI separada é necessária para o lado do toque.
Instalação da Biblioteca
- Conecte o NodeMCU ao seu computador com um cabo USB Micro-B.
- Abra a Arduino IDE. Escolha NodeMCU 1.0 (ESP-12E Module) na lista de placas e selecione a porta correta.
- Abra o painel Libraries.
- Digite "DIYables_TFT_SPI" na barra de pesquisa e encontre a entrada da DIYables.
- Clique em Install. Aceite todas as instalações de dependências.
- Search for DIYables TFT SPI created by DIYables.io and click the Install button.
Código Inicial
Todo sketch de TFT para ESP8266 parte desta base:
Experimente - Desenhar Formas
O exemplo DrawShapes desenha círculos, triângulos, retângulos, retângulos arredondados e linhas usando a API de desenho Adafruit GFX.
Execute o Código
- Ligue o módulo TFT ao NodeMCU usando a tabela acima. Alimente apenas com 3,3V.
- Conecte o cabo USB Micro-B.
- Na Arduino IDE, selecione a placa e a porta, cole o código e pressione Upload.
- O display mostra um padrão repetido de formas coloridas.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| begin() | Inicializa o display. | TFT_display.begin(); |
| setRotation(r) | Define a orientação 0-3. | TFT_display.setRotation(1); |
| fillScreen(color) | Preenche a tela com uma cor sólida. | TFT_display.fillScreen(BLACK); |
| colorRGB(r,g,b) | Cria uma cor de 16 bits a partir de R, G, B. | colorRGB(255,200,0) |
| fillCircle(x,y,r,color) | Círculo preenchido. | TFT_display.fillCircle(80,80,40,RED); |
| fillRect(x,y,w,h,color) | Retângulo preenchido. | TFT_display.fillRect(10,10,80,50,BLUE); |
| drawFastHLine(x,y,w,color) | Linha horizontal (rápida). | TFT_display.drawFastHLine(0,120,240,WHITE); |
Experimente - Mostrar Texto e Número
O exemplo ShowTextAndNumber renderiza strings e valores numéricos usando o mecanismo de texto Adafruit GFX.
Execute o Código
- Ligue e faça o upload como acima.
- O display imprime linhas de texto em tamanhos e cores diferentes.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| setTextColor(color) | Define a cor de primeiro plano do texto. | TFT_display.setTextColor(WHITE); |
| setTextSize(size) | Escala o texto. Tamanho 1 = 6×8 px, tamanho 2 = 12×16 px. | TFT_display.setTextSize(2); |
| setCursor(x, y) | Posiciona o cursor de texto no pixel (x, y). | TFT_display.setCursor(10, 20); |
| print(value) | Renderiza uma string ou número no cursor. | TFT_display.print("NodeMCU!"); |
| println(value) | Renderiza e move o cursor para a próxima linha. | TFT_display.println(42); |
Experimente - Desenhar Imagem
Experimente carregar uma imagem bitmap no display. O exemplo DrawImage renderiza uma imagem RGB565 em cores armazenada na flash de programa como um array PROGMEM const uint16_t dentro de bitmap.h. No ESP8266, os dados PROGMEM ficam na memória flash SPI e são acessados por uma instrução de leitura da flash em vez de desreferência direta de ponteiro. A biblioteca DIYables_TFT_SPI cuida disso de forma transparente.
Coloque o bitmap.h na mesma pasta do sketch antes de compilar.
Execute o Código
- Copie o bitmap.h para a mesma pasta do sketch.
- Ligue o módulo TFT ao NodeMCU como mostrado acima (GPIO13/14/12 para SPI, GPIO4/5/16 para CS/DC/RST). Use 3,3V para o VCC.
- Conecte o cabo USB Micro-B.
- Na Arduino IDE, selecione a placa e a porta, pressione Upload.
- O display mostra a imagem bitmap carregada da flash de programa.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| drawRGBBitmap(x,y,bitmap,w,h) | Renderiza um bitmap RGB565 PROGMEM com o canto superior esquerdo em (x, y). Use a palavra-chave PROGMEM no array. | TFT_display.drawRGBBitmap(0, 0, myImage, 240, 320); |
| fillScreen(color) | Pinta a tela inteira com uma cor sólida antes de desenhar. | TFT_display.fillScreen(BLACK); |
Experimente - Desenhar Imagem do Cartão SD
Experimente ler uma imagem de um cartão SD. O exemplo DrawImageSDcard transmite um arquivo binário RGB565 bruto de um cartão micro SD diretamente para o display usando um pequeno buffer. Isso evita manter a imagem inteira no heap de 80 KB do ESP8266.
Ligue o módulo SD ao mesmo barramento SPI: GPIO13 (MOSI), GPIO14 (SCK), GPIO12 (MISO). Os três GPIOs seguros para boot (GPIO4, GPIO5, GPIO16) já são usados para CS, DC e RST do TFT. O SD_CS precisa, portanto, usar um pino sensível ao boot. Os exemplos usam o GPIO15 (D8), que deve estar em LOW no boot — módulos SD padrão têm um resistor de pull-down que satisfaz isso automaticamente. Veja a observação sobre a restrição dos pinos de boot na seção de ligação.
Execute o Código
- Ligue o módulo SD ao NodeMCU, compartilhando GPIO13/14/12 com o display. Conecte o CS do SD ao D8 (GPIO15), conforme definido no código. O GPIO15 deve estar em LOW no boot — módulos SD padrão satisfazem isso com um pull-down na placa.
- Copie um arquivo de imagem binário RGB565 bruto para a raiz do cartão SD. As dimensões devem corresponder ao painel.
- Conecte o cabo USB Micro-B.
- Na Arduino IDE, selecione a placa e a porta, pressione Upload.
- O display renderiza a imagem transmitida do cartão SD.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| startWrite() | Abre uma sessão de escrita SPI direta, ativando o CS do display (GPIO4). | TFT_display.startWrite(); |
| setAddrWindow(x0,y0,x1,y1) | Define a região retangular que vai receber os dados de pixel. | TFT_display.setAddrWindow(0, 0, 239, 319); |
| pushColors(buf, len) | Escreve um buffer de valores de pixel RGB565 no display. Mantenha o buffer pequeno para respeitar os limites do heap. | TFT_display.pushColors(buf, 256); |
| endWrite() | Fecha a sessão SPI e libera o CS. | TFT_display.endWrite(); |
Experimente - Usar Fonte Externa
Experimente renderizar texto com uma fonte mais nítida. O exemplo UseExternalFont substitui a fonte embutida de 5×7 pixels por uma fonte personalizada de alta qualidade compatível com a Adafruit GFX. O descritor da fonte é incluído como um arquivo de cabeçalho e ativado com uma única chamada a setFont(). Chame setFont(NULL) para voltar à fonte embutida.
Execute o Código
- Ligue o módulo TFT ao NodeMCU como descrito na seção de ligação. Use 3,3V para o VCC.
- Conecte o cabo USB Micro-B.
- Na Arduino IDE, selecione a placa e a porta, pressione Upload.
- O display renderiza o texto usando a fonte personalizada. A qualidade dos glifos é visivelmente melhor que a da fonte embutida.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| setFont(&FontName) | Muda para uma fonte GFX personalizada. Passar NULL restaura a fonte embutida de 5×7 pixels. | TFT_display.setFont(&FreeSans12pt7b); |
| setCursor(x, y) | Move o cursor de texto para a posição de pixel indicada. | TFT_display.setCursor(10, 40); |
| setTextColor(color) | Define a cor de primeiro plano do texto. | TFT_display.setTextColor(WHITE); |
| print(text) | Imprime uma string no cursor usando a fonte ativa. | TFT_display.print("NodeMCU!"); |
Experimente - Obter Ponto de Toque
Experimente ler coordenadas brutas de toque. O exemplo TouchGetPoint liga um controlador de toque XPT2046 ao NodeMCU e imprime valores brutos do ADC no Serial Monitor a cada toque. Execute-o antes da etapa de calibração para saber qual é a faixa real do ADC que o seu painel produz.
Ligação: T_CLK→D5 (GPIO14), T_DIN→D7 (GPIO13), T_DO→D6 (GPIO12). Eles compartilham o barramento SPI com o display. T_CS→D3 (GPIO0), T_IRQ→D4 (GPIO2). Observação: GPIO0 e GPIO2 são pinos de modo de boot — eles devem estar em HIGH na energização. Eles são seguros para uso durante a execução. Veja a observação sobre a restrição dos pinos de boot na seção de ligação acima.
Execute o Código
- Ligue o XPT2046 ao NodeMCU. T_CLK→D5 (GPIO14), T_DIN→D7 (GPIO13), T_DO→D6 (GPIO12), T_CS→D3 (GPIO0), T_IRQ→D4 (GPIO2). GPIO0 e GPIO2 devem estar em HIGH na energização — veja a observação sobre pinos de boot na seção de ligação.
- Conecte o cabo USB Micro-B.
- Na Arduino IDE, selecione a placa e a porta, pressione Upload.
- Abra o Serial Monitor a 9600 baud. Toque no display para ver os valores brutos de X, Y e pressão Z.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| initTouchSPI(cs, irq) | Inicializa o XPT2046 no barramento SPI compartilhado. Passe -1 em irq se o pino de interrupção não estiver ligado. | TFT_display.initTouchSPI(0, 2); |
| readTouchRaw(x, y, z) | Retorna os valores brutos do ADC do toque sem calibração. Retorna true quando a tela está pressionada. | TFT_display.readTouchRaw(x, y, z); |
Experimente - Desenhar com Toque
Experimente desenhar na tela com o dedo. O exemplo TouchDraw usa coordenadas calibradas do XPT2046 para pintar pequenos pontos coloridos onde o dedo toca. Arraste pelo display para produzir um traço pintado contínuo.
Execute o Código
- Ligue o XPT2046 ao NodeMCU como descrito na seção Obter Ponto de Toque acima.
- Conecte o cabo USB Micro-B.
- Na Arduino IDE, selecione a placa e a porta, pressione Upload.
- Arraste o dedo pelo display para desenhar.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| initTouchSPI(cs, irq) | Inicializa o XPT2046 no barramento SPI compartilhado. | TFT_display.initTouchSPI(0, 2); |
| setTouchCalibration(minX,maxX,minY,maxY) | Mapeia os valores brutos do ADC para coordenadas de pixel da tela. Obtenha esses números no exemplo TouchCalibration. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Inverte o eixo do 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 ponto na posição do toque para formar o traço. | TFT_display.fillCircle(x, y, 3, RED); |
Experimente - Botão de Toque
Experimente criar botões de toque na tela. O exemplo TouchButton desenha botões retangulares coloridos no display e compara as coordenadas de toque calibradas com a área de cada botão a cada loop. Um toque confirmado destaca o botão e aciona a ação.
O T_IRQ não precisa estar conectado neste exemplo. Passe -1 como argumento irq para fazer polling sem um pino de interrupção.
Execute o Código
- Conecte o T_CS ao D3 (GPIO0). O T_IRQ pode ficar desconectado (passe -1). O GPIO0 deve estar em HIGH na energização — veja a observação sobre pinos de boot na seção de ligação.
- Conecte o cabo USB Micro-B.
- Na Arduino IDE, selecione a placa e a porta, pressione Upload.
- Toque nos botões do display. Cada botão deve ser destacado e acionar sua ação.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| initTouchSPI(cs, irq) | Inicializa o XPT2046. Passe -1 em irq para usar o modo de polling. | TFT_display.initTouchSPI(0, -1); |
| setTouchCalibration(minX,maxX,minY,maxY) | Aplica a calibração para que getTouch() retorne coordenadas em pixels do display. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Inverte o eixo do 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. Retorna true enquanto a tela está pressionada. | if (TFT_display.getTouch(x, y)) { ... } |
| fillRect(x, y, w, h, color) | Desenha um botão como um retângulo sólido colorido. | TFT_display.fillRect(10, 10, 100, 50, BLUE); |
Experimente - Calibração do Toque
Experimente calibrar o seu painel de toque. O exemplo TouchCalibration guia você a tocar cada canto da tela em sequência. Os valores mínimo e máximo brutos do ADC para X e Y são impressos no Serial Monitor. Anote esses quatro números — eles são as constantes de calibração para setTouchCalibration() em todos os outros sketches de toque.
Execute o Código
- Ligue o XPT2046 ao NodeMCU como descrito na seção Obter Ponto de Toque.
- Conecte o cabo USB Micro-B.
- Na Arduino IDE, selecione a placa e a porta, pressione Upload.
- Abra o Serial Monitor a 9600 baud. Toque em cada canto do display quando solicitado.
- Anote os quatro valores impressos e cole-os em setTouchCalibration() em todos os outros sketches de toque.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| initTouchSPI(cs, irq) | Inicializa o controlador XPT2046. | TFT_display.initTouchSPI(0, 2); |
| readTouchRaw(x, y, z) | Lê os valores brutos do ADC usados para determinar a faixa de calibração. | TFT_display.readTouchRaw(x, y, z); |
| setTouchCalibration(minX,maxX,minY,maxY) | Armazena os valores de calibração para que getTouch() mapeie as leituras brutas para as posições de pixel corretas. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Inverte o eixo do 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); |
Experimente - SPI Personalizado
Experimente executar o display usando a referência explícita ao barramento SPI. O ESP8266 tem um barramento SPI de hardware nos GPIO13 (MOSI), GPIO14 (SCK), GPIO12 (MISO). O exemplo CustomSPI mostra como passar &SPI explicitamente ao construtor e como reduzir a frequência do clock SPI — útil quando os fios entre o NodeMCU e o display são longos ou quando o display apresenta falhas na velocidade padrão.
Execute o Código
- Ligue o display TFT ao NodeMCU como descrito na seção de ligação. GPIO13/14/12 para dados, GPIO4/5/16 para CS/DC/RST.
- Conecte o cabo USB Micro-B.
- Na Arduino IDE, selecione a placa e a porta, pressione Upload.
- O display inicia no barramento SPI configurado e mostra um padrão de teste de barras de cores para confirmar que está funcionando.
Funções de Desenho
| Método | O Que Desenha | Exemplo |
|---|---|---|
| DIYables_ILI9341_SPI(w,h,cs,dc,rst,spi) | Construtor que aceita um ponteiro SPIClass explícito. Omita o último argumento para usar &SPI por padrão. | DIYables_ILI9341_SPI tft(240, 320, 4, 5, 16, &SPI); |
| begin() | Inicializa o display no barramento SPI configurado. | TFT_display.begin(); |
Solução de Problemas
- Tela em branco -- Confirme que o VCC é 3,3V (não 5V). Verifique MOSI (GPIO13), SCK (GPIO14), CS (GPIO4), DC (GPIO5).
- A placa não aceita upload depois de adicionar touch ou SD -- GPIO0 (T_CS), GPIO2 (T_IRQ) e GPIO15 (SD_CS) são pinos de modo de boot. Se um módulo acionar um deles no nível errado na energização, o ESP8266 inicia em modo flash em vez do seu sketch. Desconecte o fio CS do módulo, pressione Upload, aguarde "Connecting..." e depois reconecte.
- A placa não aceita upload (apenas display) -- CS/DC/RST do TFT usam GPIOs seguros para boot (GPIO4/5/16) e não devem causar problemas de upload. Confirme que nenhum outro módulo está conectado ao GPIO0, GPIO2 ou GPIO15.
- Display embaralhado -- Apenas um construtor de driver deve estar descomentado. Certifique-se de que ele corresponde ao seu painel.
- Touch não responde -- Execute primeiro o exemplo TouchCalibration e copie os valores impressos para o seu sketch.
- Cores erradas -- Verifique se MOSI e SCK do SPI não estão trocados.
Suporte de Plataformas
A biblioteca usa apenas APIs padrão do Arduino e a configuração architectures=* significa que ela compila para ESP8266 e todas as outras plataformas compatíveis com Arduino.