Fotos und RGB-Videos auf TFT-SPI-Display
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 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++
Schaltpläne
Library TFT-Shield für Arduino Nano
https://github.com/YATFT/YATFTHerstellungsprozess
- Fertigungsmobilität:Daten, Sprache, Video und Standort
- Neuer Videokonverter testet APIX3-Auto-Infotainment-Displays
- DATENMODUL:23,1-Zoll-Ultra-Stretch-TFT-Display mit intelligenter Steuerung
- Auslesen von analogen Sensoren mit Raspberry Pi und Zabbix Supervisor
- Kuman TFT 3.5 RetroPie 2018
- Video zur K 2019:Innovationen beim Recycling von Maschinen und Materialien
- Was bedeuten DN und PN bei Flanschen?(Video)
- Praktische 3D-Anzeige generiert durch Holographie und Lichtfeldtechnologie
- Bitmap-Animation auf dem ILI9341 TFT-Touchscreen-Displayschild
- Spritzguss-Oberflächenveredelungen:SPI und VDI