Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Fotos und RGB-Videos auf TFT-SPI-Display

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
2,8" 320x240 SPI TFT-Display
× 1
uSD-Karte (>1GB)
× 1
TFT-Shield (Breakout) für Arduino Nano
× 1

Über dieses Projekt

Einführung

Hallo!

Im heutigen Artikel möchte ich darüber sprechen, wie Sie Bilder oder Fotos (*.jpg-Format) sowie Videos (RGB565) auf dem Bildschirm des TFT-SPI-Displays (320x240, 2,8") anzeigen können.

Zuerst ein kleines Demo-Video:

Hardware

Benötigte Komponenten:

  • Arduino Nano R3,
  • SPI-TFT-Display (320x240) mit Touchscreen,
  • uSD-Karte>1 GB,
  • TFT-Schild für Arduino Nano.

Bringen Sie alle Teile in die im Video gezeigte Reihenfolge (oder lesen Sie den vorherigen Artikel:https://create.arduino.cc/projecthub/alf81010/tft-shield-for-arduino-nano-start-f4391e .

Software

Vorbereitung Micro-SD-Karte.

Eine Micro-SD-Karte muss in FAT32 formatiert sein. Bilder können direkt auf die Karte aufgenommen werden (ohne Bearbeitung). Es ist wünschenswert, dass die Größe der Bilder nicht mehr als 2560 x 1920 beträgt.

Um Videos im rgb565-Format abzuspielen, müssen Dateien im Voraus vorbereitet werden. Verwenden Sie zum Konvertieren von Videos ffmpeg (http://ffmpeg.org). Laden Sie es herunter und installieren Sie es auf Ihrem Computer. Verwenden Sie dann die Beispiel-Befehlszeile ffmpeg, die ein mit dieser Demo kompatibles Video anzeigt:

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

Laden Sie die Bibliothek herunter und installieren Sie sie, um mit dem TFT-Shield für Arduino Nano zu arbeiten:https://github.com/YATFT/YATFT.

Laden Sie die folgende Skizze in Arduino Nano herunter:

/******************************************** ********************************** SOFTWARE UND DOKUMENTATION WERDEN "WIE BESEHEN" OHNE JEGLICHE GEWÄHRLEISTUNG BEREITGESTELLT* ART, ENTWEDER AUSDRÜCKLICH ODER STILLSCHWEIGEND, EINSCHLIESSLICH, OHNE EINSCHRÄNKUNG, JEGLICHE GARANTIE* DER MARKTGÄNGIGKEIT, DES TITELS, DER NICHTVERLETZUNG UND DER EIGNUNG FÜR EINEN BESTIMMTEN* ZWECK. IN KEINEM FALL KÖNNEN DER AUTOR ODER SEINE LIZENZGEBER VERPFLICHTET ODER VERPFLICHTET WERDEN, FAHRLÄSSIGKEIT, STRENG HAFTUNG, BEITRAG,* GEWÄHRLEISTUNGSVERLETZUNG ODER ANDERE RECHTSGEMÄßE THEORIE JEGLICHE DIREKTE ODER INDIREKTE* SCHÄDEN ODER KOSTEN, DIE NICHT BEZÜGLICH VON A ,* INDIREKTE, STRAFEN- ODER FOLGESCHÄDEN, GEWINN- ODER DATENVERLUST,* KOSTEN FÜR DIE BESCHAFFUNG VON ERSATZWAREN, TECHNOLOGIE, DIENSTLEISTUNGEN ODER ALLE* ANSPRÜCHE DRITTER (EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF VERTEIDIGUNGSKOSTEN ODER ANDERES),*LAR .**************************************************** *****************************/#include  // Hardwarespezifische Bibliothek#include #include #include YATFT tft(0);SDC sdc;#define CS_PIN A0// MOSI=11, MISO=12, SCK=13XPT2046_Touchscreen ts(CS_PIN);/* Bei Verwendung des Shields sind alle Steuer- und Datenleitungen fixiert und optional kann eine einfachere Deklaration verwendet werden:*/uint16_t frame =0;uint32_t total_time =0;bool f_first =true;uint8_ t-Modus =0;/******************************************** ************************************************* ***/void setup (void) {Serial.begin(115200); // Initialisieren Sie den seriellen Port Serial.println (F ("Beispiel für Foto- und Videowiedergabe!")); tft.begin(0x4391,-8); // Anzeige initialisieren tft.SetColor(BLACK); tft.ClearDevice(); // Bildschirm löschen ts.begin(); // Init Touchscreen SPI.end(); Serial.print (F ("FS Init...")); uint8_t-Zustand =sdc.FSInit(); if (Zustand ==0) Serial.println (F ("erfolglos.")); sonst Serial.println (F ("Erfolg.")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; total_time =millis() + 500;}void loop (void){ if (total_time 100 &&y<140) {// Stoppmodus =1; Serial.println (F("Modus =1")); aufrechtzuerhalten. Sonst if (x>140 &&x<180 &&y>100 &&y<140) {// Pausenmodus =2; // Schaltflächen zeichnen tft.SetColor(BRIGHTRED); tft.DrawFillCirc(GetMaxX()/4,GetMaxY()/2,50); tft.SetColor (HELLGELB); 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 (HELLGELB); for(uint8_t i=0; i<60; i++) {tft.DrawLine(210+i, 90+i/2, 210+i, 150-i/2); } Serial.println (F ("Modus =2")); aufrechtzuerhalten. Sonst if (x>190 &&y>100 &&y<140) {// Spielmodus =0; Serial.println (F("Modus =0")); } Rückkehrmodus; } SPI.end(); Rückkehrmodus;} 

Ich habe versucht, einen kurzen Artikel zu schreiben und die wichtigsten Punkte darin zu beschreiben. Außerdem gibt es in diesem Projekt nichts Schwieriges. Aber wenn Sie Fragen haben - fragen Sie, zögern Sie nicht.;-) Ich werde versuchen, einen Artikel hinzuzufügen.

Danke für die Aufmerksamkeit!

Fortsetzung folgt.

Vorherige Artikel:

1) Einzigartiges TFT-Shield für Arduino Uno - Start,

2) Einzigartiges TFT-Schild für Arduino Uno - OV7670 Cam Live View,

3) Einzigartiges TFT-Schild für Arduino Uno - Arduino Bluetooth-Kamera (ABC),

4) TFT-Shield für Arduino Nano - Start.

Update 01.04.2021:

Hallo wieder! Es gibt eine aktualisierte Bibliothek für eine Reihe von Bildschirmen, die derzeit aus zwei Shields und zwei Breakout-Boards besteht. Die Skizze wird je nach gewählter Version (von 1 bis 4) und der Art des Mikrocontrollers (MegaAVR oder ESP-32) zusammengestellt. Fotos, Beispiele hinzugefügt. Weitere Informationen finden Sie in der https://github.com/Ekaburg/EkaTFT.

Code

  • PhotoAndVideoPlay.ino
PhotoAndVideoPlay.inoC/C++
/************************************************ ****************************** * SOFTWARE UND DOKUMENTATION WERDEN "WIE BESEHEN" OHNE JEGLICHE GEWÄHRLEISTUNG * ENTWEDER ZUR VERFÜGUNG GESTELLT AUSDRÜCKLICH ODER STILLSCHWEIGEND, EINSCHLIESSLICH, OHNE EINSCHRÄNKUNG, JEGLICHE GARANTIE * DER MARKTFÄHIGKEIT, TITEL, NICHTVERLETZUNG UND EIGNUNG FÜR EINEN BESTIMMTEN * ZWECK. IN KEINEM FALL KÖNNEN DER AUTOR ODER SEINE LIZENZGEBER HAFTBAR ODER * VERPFLICHTET WERDEN, FAHRLÄSSIGKEIT, STRENG HAFTUNG, BEITRAG, * GEWÄHRLEISTUNGSVERLETZUNG ODER ANDERE RECHTSGEMÄßE THEORIE JEDE DIREKTE ODER INDIREKTE * SCHÄDEN ODER KOSTEN, DIE NICHT INKLUSIVE A , * INDIREKTE, STRAFEN- ODER FOLGESCHÄDEN, GEWINN- ODER DATENVERLUST, * KOSTEN FÜR DIE BESCHAFFUNG VON ERSATZWAREN, TECHNOLOGIE, DIENSTLEISTUNGEN ODER * ANSPRÜCHE DRITTER (EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF VERTEIDIGUNGSKOSTEN ODER ANDERES), .**************************************************** *****************************/#include // Hardwarespezifische Bibliothek#include #include #include YATFT tft(0);SDC sdc;#define CS_PIN A0// MOSI=11, MISO=12, SCK=13XPT2046_Touchscreen ts(CS_PIN);/* Bei Verwendung des Shields sind alle Steuer- und Datenleitungen fixiert und optional kann eine einfachere Deklaration verwendet werden:*/uint16_t frame =0;uint32_t total_time =0;bool f_first =true;uint8_t Modus =0;/******************************************** ************************************************* ****/void setup (void) {Serial.begin(115200); // Initialisieren Sie den seriellen Port Serial.println (F ("Beispiel für Foto- und Videowiedergabe!")); tft.begin(0x4391,-8); // Anzeige initialisieren tft.SetColor(BLACK); tft.ClearDevice(); // Bildschirm löschen ts.begin(); // Init Touchscreen SPI.end(); Serial.print (F ("FS Init...")); uint8_t-Zustand =sdc.FSInit(); if (Zustand ==0) Serial.println (F ("erfolglos.")); sonst Serial.println (F ("Erfolg.")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; total_time =millis() + 500;}void loop (void){ if (total_time 100 &&y<140) {// Stoppmodus =1; Serial.println (F("Modus =1")); aufrechtzuerhalten. Sonst if (x>140 &&x<180 &&y>100 &&y<140) {// Pausenmodus =2; // Schaltflächen zeichnen tft.SetColor(BRIGHTRED); tft.DrawFillCirc(GetMaxX()/4,GetMaxY()/2,50); tft.SetColor (HELLGELB); 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 (HELLGELB); for(uint8_t i=0; i<60; i++) {tft.DrawLine(210+i, 90+i/2, 210+i, 150-i/2); } Serial.println (F ("Modus =2")); aufrechtzuerhalten. Sonst if (x>190 &&y>100 &&y<140) {// Spielmodus =0; Serial.println (F("Modus =0")); } Rückkehrmodus; } SPI.end(); Rückkehrmodus;}

Schaltpläne

Library TFT-Shield für Arduino Nano
https://github.com/YATFT/YATFT

Herstellungsprozess

  1. Fertigungsmobilität:Daten, Sprache, Video und Standort
  2. Neuer Videokonverter testet APIX3-Auto-Infotainment-Displays
  3. DATENMODUL:23,1-Zoll-Ultra-Stretch-TFT-Display mit intelligenter Steuerung
  4. Auslesen von analogen Sensoren mit Raspberry Pi und Zabbix Supervisor
  5. Kuman TFT 3.5 RetroPie 2018
  6. Video zur K 2019:Innovationen beim Recycling von Maschinen und Materialien
  7. Was bedeuten DN und PN bei Flanschen?(Video)
  8. Praktische 3D-Anzeige generiert durch Holographie und Lichtfeldtechnologie
  9. Bitmap-Animation auf dem ILI9341 TFT-Touchscreen-Displayschild
  10. Spritzguss-Oberflächenveredelungen:SPI und VDI