Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Fotos y video RGB en pantalla TFT SPI

Componentes y suministros

Arduino Nano R3
× 1
Pantalla TFT de 2,8 "320x240 SPI
× 1
tarjeta uSD (> 1GB)
× 1
TFT shield (breakout) para Arduino Nano
× 1

Acerca de este proyecto

Introducción

¡Hola!

En el artículo de hoy, me gustaría hablar sobre cómo puede ver imágenes o fotos (formato * .jpg), así como videos (formato RGB565) en la pantalla de la pantalla TFT SPI (320x240, 2.8 ").

Primero, un pequeño video de demostración:

Hardware

Componentes necesarios:

  • Arduino Nano R3,
  • Pantalla SPI TFT (320x240) con pantalla táctil,
  • tarjeta uSD> 1GB,
  • Escudo TFT para Arduino Nano.

Poniendo todas las partes en el orden que se muestra en el video (o puedes leer el artículo anterior:https://create.arduino.cc/projecthub/alf81010/tft-shield-for-arduino-nano-start-f4391e.

Software

Preparación Tarjeta Micro SD.

Una tarjeta micro SD debe formatearse en FAT32. Las imágenes se pueden grabar directamente en la tarjeta (sin ningún procesamiento). Es deseable que el tamaño de las imágenes no sea superior a 2560x1920.

Para reproducir videos en formato rgb565, los archivos deben prepararse con anticipación. Para convertir video, use ffmpeg (http://ffmpeg.org). Descargue e instale en su computadora. Luego use la línea de comando de ejemplo ffmpeg, que muestra un video compatible con esta demostración:

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

Descargue e instale la biblioteca necesaria para trabajar con el protector TFT para Arduino Nano:https://github.com/YATFT/YATFT.

Descargue el siguiente boceto en Arduino Nano:

  / **************************************** *********************************** EL SOFTWARE Y LA DOCUMENTACIÓN SE PROPORCIONAN "TAL CUAL" SIN GARANTÍA DE NINGUNA * TIPO, YA SEA EXPRESA O IMPLÍCITA, INCLUYENDO, SIN LIMITACIÓN, CUALQUIER GARANTÍA * DE COMERCIABILIDAD, TÍTULO, NO INFRACCIÓN Y APTITUD PARA UN PROPÓSITO * DETERMINADO. EN NINGÚN CASO EL AUTOR O SUS LICENCIANTES SERÁN RESPONSABLES U * OBLIGADOS BAJO CONTRATO, NEGLIGENCIA, RESPONSABILIDAD ESTRICTA, CONTRIBUCIÓN, * INCUMPLIMIENTO DE GARANTÍA U OTRA TEORÍA LEGAL EQUITATIVA CUALQUIER DAÑO O GASTOS DIRECTOS O INDIRECTOS * O GASTOS INCLUIDOS, PERO NO SE LIMITAN A CUALQUIER , * DAÑOS INDIRECTOS, PUNITIVOS O CONSECUENTES, PÉRDIDA DE BENEFICIOS O DATOS, * COSTO DE ADQUISICIÓN DE BIENES SUSTITUTOS, TECNOLOGÍA, SERVICIOS O CUALQUIER * RECLAMO DE TERCEROS (INCLUYENDO PERO NO LIMITADO A CUALQUIER DEFENSA DE LOS MISMOS), * U OTROS COSTOS SIMILARES . *********************************************** ****************************** / # include  // La biblioteca específica del hardware # incluye  #include  #include  YATFT tft (0); SDC sdc; #define CS_PIN A0 // MOSI =11, MISO =12, SCK =13XPT2046_Touchscreen ts (CS_PIN); / * Si se usa el escudo, todas las líneas de control y de datos son fijas y, opcionalmente, se puede usar una declaración más simple:* / uint16_t frame =0; uint32_t total_time =0; bool f_first =true; uint8_ modo t =0; / ****************************************** *********************************************** *** / void setup (void) {Serial.begin (115200); // inicializar el puerto serial Serial.println (F ("¡Ejemplo de reproducción de fotos y videos!")); tft.begin (0x4391, -8); // inicializar la pantalla tft.SetColor (BLACK); tft.ClearDevice (); // Limpiar pantalla ts.begin (); // Iniciar pantalla táctil SPI.end (); Serial.print (F ("FS Init ...")); uint8_t estado =sdc.FSInit (); if (estado ==0) Serial.println (F ("sin éxito.")); else Serial.println (F ("éxito")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; tiempo_total =milis () + 500;} bucle vacío (vacío) {if (tiempo_total  100 &&y <140) {// Modo de parada =1; Serial.println (F ("modo =1")); } más si (x> 140 &&x <180 &&y> 100 &&y <140) {// Modo de pausa =2; // Dibujar botones 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 (BRILLANTE); 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")); } más si (x> 190 &&y> 100 &&y <140) {// Modo de reproducción =0; Serial.println (F ("modo =0")); } modo de retorno; } SPI.end (); modo de retorno;}  

Intenté hacer un artículo breve y describir los puntos principales. Además, no hay nada difícil en este proyecto. Pero si tiene alguna pregunta, pregunte, no lo dude.;-) Intentaré agregar un artículo.

¡Gracias por la atención!

Continuará.

Artículos anteriores:

1) Escudo TFT único para Arduino Uno - Inicio,

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

3) Escudo TFT único para Arduino Uno - Cámara Bluetooth Arduino (ABC),

4) TFT Shield para Arduino Nano - Inicio.

Actualización 01.04.2021:

¡Hola de nuevo! Existe una biblioteca actualizada para una serie de pantallas, que actualmente consta de dos escudos y dos placas de conexión. El boceto se compila en función de la versión seleccionada (de 1 a 4) y el tipo de microcontrolador (MegaAVR o ESP-32). Fotos agregadas, ejemplos. Puede encontrar más información en https://github.com/Ekaburg/EkaTFT.

Código

  • PhotoAndVideoPlay.ino
PhotoAndVideoPlay.ino C / C ++
 / ******************************************** ******************************** * EL SOFTWARE Y LA DOCUMENTACIÓN SE SUMINISTRAN "TAL CUAL" SIN GARANTÍA DE NINGÚN TIPO, NI EXPRESA O IMPLÍCITA, INCLUYENDO SIN LIMITACIÓN, CUALQUIER GARANTÍA * DE COMERCIABILIDAD, TÍTULO, NO INFRACCIÓN Y APTITUD PARA UN PROPÓSITO EN PARTICULAR *. EN NINGÚN CASO EL AUTOR O SUS LICENCIANTES SERÁN RESPONSABLES U * OBLIGADOS BAJO CONTRATO, NEGLIGENCIA, RESPONSABILIDAD ESTRICTA, CONTRIBUCIÓN, * INCUMPLIMIENTO DE GARANTÍA U OTRA TEORÍA LEGAL EQUITATIVA CUALQUIER DAÑO O GASTOS DIRECTOS O INDIRECTOS * O GASTOS INCLUIDOS, PERO NO SE LIMITAN A CUALQUIER , * DAÑOS INDIRECTOS, PUNITIVOS O CONSECUENTES, PÉRDIDA DE BENEFICIOS O DATOS, * COSTO DE ADQUISICIÓN DE BIENES SUSTITUTOS, TECNOLOGÍA, SERVICIOS O CUALQUIER * RECLAMO DE TERCEROS (INCLUYENDO PERO NO LIMITADO A CUALQUIER DEFENSA DE LOS MISMOS), * U OTROS COSTOS SIMILARES . *********************************************** ****************************** / # include  // La biblioteca específica del hardware # incluye  #include  #include  YATFT tft (0); SDC sdc; #define CS_PIN A0 // MOSI =11, MISO =12, SCK =13XPT2046_Touchscreen ts (CS_PIN); / * Si usa el escudo, todas las líneas de control y datos son fijas, y opcionalmente se puede usar una declaración más simple:* / uint16_t frame =0; uint32_t total_time =0; bool f_first =true; uint8_t modo =0; / **************************************** *********************************************** **** / void setup (void) {Serial.begin (115200); // inicializar el puerto serial Serial.println (F ("¡Ejemplo de reproducción de fotos y videos!")); tft.begin (0x4391, -8); // inicializar la pantalla tft.SetColor (BLACK); tft.ClearDevice (); // Limpiar pantalla ts.begin (); // Iniciar pantalla táctil SPI.end (); Serial.print (F ("FS Init ...")); uint8_t estado =sdc.FSInit (); if (estado ==0) Serial.println (F ("sin éxito.")); else Serial.println (F ("éxito")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; tiempo_total =milis () + 500;} bucle vacío (vacío) {if (tiempo_total  100 &&y <140) {// Modo de parada =1; Serial.println (F ("modo =1")); } más si (x> 140 &&x <180 &&y> 100 &&y <140) {// Modo de pausa =2; // Dibujar botones 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 (BRILLANTE); 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")); } más si (x> 190 &&y> 100 &&y <140) {// Modo de reproducción =0; Serial.println (F ("modo =0")); } modo de retorno; } SPI.end (); modo de retorno;} 

Esquemas

Escudo de biblioteca TFT para Arduino Nano
https://github.com/YATFT/YATFT

Proceso de manufactura

  1. Movilidad de fabricación:datos, voz, video y ubicación
  2. El nuevo convertidor de video prueba las pantallas de información y entretenimiento automotrices APIX3
  3. MÓDULO DE DATOS:pantalla TFT ultraestirada de 23,1 ”con control inteligente
  4. Lectura de sensores analógicos con Raspberry Pi y Zabbix Supervisor
  5. Kuman TFT 3.5 RetroPie 2018
  6. Video de K 2019:Innovaciones en el reciclaje de maquinaria y materiales
  7. ¿Qué significan DN y PN en las bridas? (Video)
  8. Práctica pantalla 3D generada por tecnología de holografía y campo de luz
  9. Animación de mapa de bits en ILI9341 TFT Touchscreen Display Shield
  10. Arduclock 3D RGB
  11. Acabados superficiales de moldeo por inyección:SPI y VDI