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

Fotos e vídeo RGB na tela TFT SPI

Componentes e suprimentos

Arduino Nano R3
× 1
2,8 "Visor TFT SPI 320x240
× 1
cartão uSD (> 1GB)
× 1
Proteção TFT (breakout) para Arduino Nano
× 1

Sobre este projeto





Introdução


Olá!

No artigo de hoje, gostaria de falar sobre como você pode visualizar imagens ou fotos (formato * .jpg), bem como vídeo (formato RGB565) na tela do monitor TFT SPI (320x240, 2,8 ").

Primeiro, um pequeno vídeo de demonstração:





Hardware


Componentes necessários:
  • Arduino Nano R3,
  • Tela SPI TFT (320x240) com tela sensível ao toque,
  • cartão uSD> 1 GB,
  • escudo TFT para Arduino Nano.

Colocando todas as partes na ordem mostrada no vídeo (ou você pode ler o artigo anterior:https://create.arduino.cc/projecthub/alf81010/tft-shield-for-arduino-nano-start-f4391e.





Software


Preparação Cartão Micro SD.

Um cartão micro SD deve ser formatado em FAT32. As imagens podem ser gravadas diretamente no cartão (sem qualquer processamento). É desejável que o tamanho das imagens não seja superior a 2560x1920.

Para reproduzir vídeo no formato rgb565, os arquivos devem ser preparados com antecedência. Para converter o vídeo, use ffmpeg (http://ffmpeg.org). Baixe e instale no seu computador. Em seguida, use o exemplo de linha de comando ffmpeg, que exibe um vídeo compatível com esta demonstração:

ffmpeg -i video.avi -s 320x240 -pix_fmt rgb565 video.rgb

Baixe e instale a biblioteca necessária para trabalhar com o escudo TFT para Arduino Nano:https://github.com/YATFT/YATFT.

Baixe o seguinte esboço no Arduino Nano:
  / ******************************************* ************************************* O SOFTWARE E A DOCUMENTAÇÃO SÃO FORNECIDOS "COMO ESTÃO" SEM GARANTIA DE NENHUMA * TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, SEM LIMITAÇÃO, QUALQUER GARANTIA * DE COMERCIALIZAÇÃO, TÍTULO, NÃO VIOLAÇÃO E ADEQUAÇÃO A UM DETERMINADO * FIM. EM NENHUMA HIPÓTESE O AUTOR OU SEUS LICENCIANTES SERÃO RESPONSÁVEIS OU * OBRIGADOS SOB CONTRATO, NEGLIGÊNCIA, RESPONSABILIDADE ESTRITA, CONTRIBUIÇÃO, * QUEBRA DE GARANTIA OU OUTRA TEORIA LEGAL EQUITATIVA QUALQUER DIRETO OU INDIRETO * DANOS OU DESPESAS ESPECIAIS, INCLUINDO QUALQUER COMPRIMENTO ESPECIAL, INCLUÍDO , * DANOS INDIRETOS, PUNITIVOS OU CONSEQÜENCIAIS, PERDA DE LUCROS OU DADOS PERDIDOS, * CUSTO DE AQUISIÇÃO DE BENS DE SUBSTITUIÇÃO, TECNOLOGIA, SERVIÇOS OU QUALQUER * RECLAMAÇÕES DE TERCEIROS (INCLUINDO, MAS NÃO SE LIMITANDO A QUALQUER DEFESA DE OUTROS CUSTOS, * . ************************************************* ******************************** / # include  // Biblioteca específica de hardware # include  #include  #include  YATFT tft (0); SDC sdc; #define CS_PIN A0 // MOSI =11, MISO =12, SCK =13XPT2046_Touchscreen ts (CS_PIN); / * Se estiver usando o escudo, todas as linhas de controle e dados são fixas e uma declaração mais simples pode ser usada opcionalmente:* / uint16_t frame =0; uint32_t total_time =0; bool f_first =true; uint8_ t mode =0; / ********************************************* *************************************************** *** / configuração vazia (vazia) {Serial.begin (115200); // inicializa a porta serial Serial.println (F ("Exemplo de reprodução de foto e vídeo!")); tft.begin (0x4391, -8); // inicializa a exibição tft.SetColor (BLACK); tft.ClearDevice (); // Limpar tela ts.begin (); // Init Touchscreen SPI.end (); Serial.print (F ("FS Init ...")); uint8_t state =sdc.FSInit (); if (estado ==0) Serial.println (F ("sem sucesso.")); senão Serial.println (F ("sucesso.")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; total_time =millis () + 500;} void loop (void) {if (total_time  100 &&y <140) {// Modo de parada =1; Serial.println (F ("modo =1")); } else if (x> 140 &&x <180 &&y> 100 &&y <140) {// Modo de pausa =2; // Botões de desenho tft.SetColor (BRIGHTRED); tft.DrawFillCirc (GetMaxX () / 4, GetMaxY () / 2,50); tft.SetColor (BRIGHTYELLOW); tft.DrawFillRect (GetMaxX () / 4-30, GetMaxY () / 2-30, GetMaxX () / 4 + 30, GetMaxY () / 2 + 30); tft.SetColor (BRIGHTRED); tft.DrawFillCirc (GetMaxX () / 4 * 3, GetMaxY () / 2,50); tft.SetColor (BRIGHTYELLOW); para (uint8_t i =0; i <60; i ++) {tft.DrawLine (210 + i, 90 + i / 2, 210 + i, 150-i / 2); } Serial.println (F ("modo =2")); } else if (x> 190 &&y> 100 &&y <140) {// Modo de reprodução =0; Serial.println (F ("modo =0")); } modo de retorno; } SPI.end (); modo de retorno;}  

Tentei fazer um pequeno artigo e descrever os principais pontos dele. Além disso, não há nada difícil neste projeto. Mas se você tiver alguma dúvida - pergunte, não hesite.;-) Vou tentar adicionar um artigo.

Obrigado pela atenção!

Continua.

Artigos anteriores:

1) Escudo TFT exclusivo para Arduino Uno - Iniciar,

2) Escudo TFT exclusivo para Arduino Uno - OV7670 Cam Live View,

3) Escudo TFT exclusivo para Arduino Uno - Câmera Arduino Bluetooth (ABC),

4) TFT Shield para Arduino Nano - Iniciar.



Atualização 01.04.2021:

Olá de novo! Há uma biblioteca atualizada para uma série de telas, que atualmente consiste em dois escudos e duas placas de quebra. O esboço é compilado dependendo da versão selecionada (de 1 a 4) e do tipo de microcontrolador (MegaAVR ou ESP-32). Adicionadas fotos, exemplos. Mais informações podem ser encontradas em https://github.com/Ekaburg/EkaTFT.


Código

  • PhotoAndVideoPlay.ino
PhotoAndVideoPlay.ino C / C ++
 / ********************************************** ********************************** * SOFTWARE E DOCUMENTAÇÃO SÃO FORNECIDOS "TAL COMO ESTÃO" SEM GARANTIA DE QUALQUER * TIPO, QUALQUER EXPRESSA OU IMPLÍCITA, INCLUINDO, SEM LIMITAÇÃO, QUALQUER GARANTIA * DE COMERCIALIZAÇÃO, TÍTULO, NÃO VIOLAÇÃO E ADEQUAÇÃO A UM DETERMINADO * PROPÓSITO. EM NENHUMA HIPÓTESE O AUTOR OU SEUS LICENCIANTES SERÃO RESPONSÁVEIS OU * OBRIGADOS SOB CONTRATO, NEGLIGÊNCIA, RESPONSABILIDADE ESTRITA, CONTRIBUIÇÃO, * QUEBRA DE GARANTIA OU OUTRA TEORIA LEGAL EQUITATIVA QUALQUER DIRETO OU INDIRETO * DANOS OU DESPESAS ESPECIAIS, INCLUINDO QUALQUER COMPRIMENTO ESPECIAL, INCLUÍDO , * DANOS INDIRETOS, PUNITIVOS OU CONSEQÜENCIAIS, PERDA DE LUCROS OU DADOS PERDIDOS, * CUSTO DE AQUISIÇÃO DE BENS DE SUBSTITUIÇÃO, TECNOLOGIA, SERVIÇOS OU QUALQUER * RECLAMAÇÕES DE TERCEIROS (INCLUINDO, MAS NÃO SE LIMITANDO A QUALQUER DEFESA DE OUTROS CUSTOS, * . ************************************************* ******************************** / # include  // Biblioteca específica de hardware # include  #include  #include  YATFT tft (0); SDC sdc; #define CS_PIN A0 // MOSI =11, MISO =12, SCK =13XPT2046_Touchscreen ts (CS_PIN); / * Se estiver usando o escudo, todas as linhas de controle e dados são fixas e uma declaração mais simples pode ser usada opcionalmente:* / uint16_t frame =0; uint32_t total_time =0; bool f_first =true; uint8_t mode =0; / ******************************************** *************************************************** **** / configuração de vazio (vazio) {Serial.begin (115200); // inicializa a porta serial Serial.println (F ("Exemplo de reprodução de foto e vídeo!")); tft.begin (0x4391, -8); // inicializa a exibição tft.SetColor (BLACK); tft.ClearDevice (); // Limpar tela ts.begin (); // Init Touchscreen SPI.end (); Serial.print (F ("FS Init ...")); uint8_t state =sdc.FSInit (); if (estado ==0) Serial.println (F ("sem sucesso.")); senão Serial.println (F ("sucesso.")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; total_time =millis () + 500;} void loop (void) {if (total_time  100 &&y <140) {// Modo de parada =1; Serial.println (F ("modo =1")); } else if (x> 140 &&x <180 &&y> 100 &&y <140) {// Modo de pausa =2; // Botões de desenho tft.SetColor (BRIGHTRED); tft.DrawFillCirc (GetMaxX () / 4, GetMaxY () / 2,50); tft.SetColor (BRIGHTYELLOW); tft.DrawFillRect (GetMaxX () / 4-30, GetMaxY () / 2-30, GetMaxX () / 4 + 30, GetMaxY () / 2 + 30); tft.SetColor (BRIGHTRED); tft.DrawFillCirc (GetMaxX () / 4 * 3, GetMaxY () / 2,50); tft.SetColor (BRIGHTYELLOW); para (uint8_t i =0; i <60; i ++) {tft.DrawLine (210 + i, 90 + i / 2, 210 + i, 150-i / 2); } Serial.println (F ("modo =2")); } else if (x> 190 &&y> 100 &&y <140) {// Modo de reprodução =0; Serial.println (F ("modo =0")); } modo de retorno; } SPI.end (); modo de retorno;} 

Esquemas

Biblioteca de escudo TFT para Arduino Nano
https://github.com/YATFT/YATFT

Processo de manufatura

  1. Mobilidade de fabricação:Dados, voz, vídeo e localização
  2. Novo conversor de vídeo testa telas de infoentretenimento automotivo APIX3
  3. MÓDULO DE DADOS:Tela TFT ultra-esticada de 23,1 ”com controle inteligente
  4. Sensores analógicos lendo com Raspberry Pi e Zabbix Supervisor
  5. Kuman TFT 3.5 RetroPie 2018
  6. Vídeo K 2019:Inovações na reciclagem de máquinas e materiais
  7. O que DN e PN significam em flanges? (Vídeo)
  8. Tela 3D prática gerada por holografia e tecnologia de campo de luz
  9. Animação de bitmap em ILI9341 TFT Touchscreen Display Shield
  10. Acabamentos de superfície de moldagem por injeção:SPI e VDI