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