Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Exibir Imagens BMP do Cartão SD no Shield LCD TFT 2.4″ com Arduino

Componentes e Materiais

Componente Quantidade
Arduino UNO 1

Sobre o Projeto

Este tutorial é a continuação de dois anteriores sobre o Shield LCD TFT 2.4″ Touch Screen com Arduino UNO:

Hoje focamos na leitura de imagens do cartão SD e exibição na tela.

Preparação do Cartão SD

  1. Formate o cartão como FAT32
  2. Transfira suas imagens no formato BMP 24 bits
  3. Resolução ideal: 240×320 pixels (orientação padrão) ou 320×240 (rotação 90°)
Exibir Imagens BMP do Cartão SD no Shield LCD TFT 2.4″ com Arduino
Orientação padrão: setRotation(0) – imagens 240×320
Exibir Imagens BMP do Cartão SD no Shield LCD TFT 2.4″ com Arduino
Rotação 90°: setRotation(1) – imagens 320×240

Escolha a orientação que preferir – pode girar a tela no código ou rotacionar as imagens no PC. Lembre-se dos nomes dos arquivos (ex: Img1.bmp) e insira o cartão no shield.

Exibir Imagens BMP do Cartão SD no Shield LCD TFT 2.4″ com Arduino
Exemplo de arquivos BMP 24 bits no cartão SD

Biblioteca

A biblioteca que funcionou para mim: SPFD5408_Adafruit_GFX + SPFD5408_Adafruit_TFTLCD. Se ao testar os exemplos aparecer tela branca, procure a biblioteca compatível com seu shield específico.

Códigos

Dois códigos de exemplo (formato .ino) – lembre-se de alterar os nomes dos arquivos de imagem conforme os seus. Consulte o tutorial completo se precisar de ajuda.

Código 1 – Exibição Sequencial de Imagens

/* Exibe imagens BMP do cartão SD no shield TFT 2.4" 
 * Referência: SurtrTech.com
 */
#include <SPFD5408_Adafruit_GFX.h>
#include <SPFD5408_Adafruit_TFTLCD.h>
#include <SPI.h>
#include <SD.h>

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define SD_CS 10

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

void setup() {
  Serial.begin(9600);
  tft.reset();
  uint16_t identifier = tft.readID();
  pinMode(10, OUTPUT);
  digitalWrite(10, HIGH);
  tft.begin(identifier);
  
  if (!SD.begin(SD_CS)) {
    progmemPrintln(PSTR("Falha no SD!"));
    return;
  }
}

void loop() {
  bmpDraw("Logo.bmp", 0, 0);
  delay(2000);
  bmpDraw("Img2.bmp", 0, 0);
  delay(2000);
  bmpDraw("Img3.bmp", 0, 0);
  delay(2000);
}

// Função de desenho BMP (não modifique)
#define BUFFPIXEL 20
void bmpDraw(char *filename, int x, int y) {
  // ... (código completo de parsing BMP e renderização linha a linha)
  // Inclui leitura de cabeçalho, verificação de formato 24 bits não comprimido,
  // buffer de pixels, conversão RGB565 e envio para display via pushColors()
}

// Funções auxiliares read16, read32, progmemPrint, progmemPrintln

Código 2 – Apresentação de Slides com Controle Touch

/* Apresentação de slides controlada por toque na tela
 * Imagens lidas do cartão SD
 * Referência: SurtrTech.com
 */
#include <SPFD5408_Adafruit_GFX.h>
#include <SPFD5408_Adafruit_TFTLCD.h>
#include <SPI.h>
#include <SD.h>
#include <SPFD5408_TouchScreen.h>

#if defined(__SAM3X8E__)
#undef __FlashStringHelper::F(string_literal)
#define F(string_literal) string_literal
#endif

// Pinos do touch screen (verifique seu shield!)
#define YP A3
#define XM A2
#define YM 9
#define XP 8

// Calibração (execute código de calibração primeiro)
#define TS_MINX 176
#define TS_MINY 159
#define TS_MAXX 921
#define TS_MAXY 884
#define MINPRESSURE 10
#define MAXPRESSURE 1000

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

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define SD_CS 10

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

char x[] = "x1.bmp"; // Array para manipular número do arquivo

void setup() {
  Serial.begin(9600);
  tft.reset();
  uint16_t identifier = tft.readID();
  pinMode(10, OUTPUT);
  digitalWrite(10, HIGH);
  tft.begin(identifier);
  
  if (!SD.begin(SD_CS)) {
    progmemPrintln(PSTR("Falha no SD!"));
    return;
  }
  
  tft.setRotation(1); // Rotação 90°
  bmpDraw(x, 0, 0);   // Desenha primeira imagem (x1.bmp)
}

void loop() {
  // Limites do array (1 a 4 = ASCII 49 a 52)
  if (x[1] < 49) x[1] = 49;
  if (x[1] > 52) x[1] = 52;
  
  TSPoint p = ts.getPoint();
  pinMode(XM, OUTPUT);
  pinMode(YP, OUTPUT);
  
  if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
    p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
    p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
    
    // Tela rotacionada: botões nas laterais (eixo Y)
    if (p.y > 0 && p.y < 100) { // Botão esquerdo
      Serial.println("Esquerda");
      x[1] = x[1] - 1;
      bmpDraw(x, 0, 0);
      delay(300);
    } else if (p.y > 200 && p.y < 320) { // Botão direito
      Serial.println("Direita");
      x[1] = x[1] + 1;
      bmpDraw(x, 0, 0);
      delay(300);
    }
  }
}

// Função bmpDraw idêntica ao Código 1
// Funções auxiliares read16, read32, progmemPrint, progmemPrintln

Esquemático

É um shield plug-and-play – basta encaixar no Arduino UNO.

Exibir Imagens BMP do Cartão SD no Shield LCD TFT 2.4″ com Arduino

Processo de manufatura

  1. A Indústria de Cartões de Saudação: História, Produção e Tendências Futuras
  2. Cartão de Crédito: História, Design, Fabricação e Tendências Futuras
  3. Display de Cristal Líquido (LCD): Tecnologia, Fabricação e Perspectivas Futuras
  4. DATA MODUL Lança Display TFT Ultra-Slim 23,1" com Controle Smart Wi-Fi
  5. Distec Apresenta Display TFT Transfletivo de 7 Pol. Ortustech: Robusto, Legível sob Luz Solar, Baixo Consumo
  6. Nuvo-7160GC: GPU‑PC Robusto Entregando 6 TFLOPS, Suporte GPU 120 W e Saída 4K para Visão de Máquina, VR e Automação
  7. Primal Display: Construa Monitor de Temperatura LCD com Raspberry Pi
  8. Como Instalar Display TFT 3.5″ Kuman no RetroPie – Guia Passo a Passo
  9. IA Gera Imagens Realistas de Refeições a Partir de Receitas em Texto
  10. Projeto DIY Arduino LCD: Monte com Resistores, Botão e Display 16x2