Tentang proyek ini
Pendahuluan
Halo!
Dalam artikel hari ini, saya ingin berbicara tentang bagaimana Anda dapat melihat gambar atau foto (format *.jpg), serta video (format RGB565) di layar layar TFT SPI (320x240, 2,8").
Pertama, video demo kecil:
Perangkat Keras
Komponen yang dibutuhkan:
- Layar TFT SPI (320x240) dengan layar sentuh,
- Pelindung TFT untuk Arduino Nano.
Susun semua part sesuai urutan yang ada di video (atau bisa baca artikel sebelumnya:https://create.arduino.cc/projecthub/alf81010/tft-shield-for-arduino-nano-start-f4391e .
Perangkat Lunak
Persiapan kartu Micro SD.
Kartu micro SD harus diformat dalam FAT32. Gambar dapat direkam langsung ke kartu (tanpa pemrosesan apa pun). Sebaiknya ukuran gambar tidak lebih dari 2560x1920.
Untuk memutar video dalam format rgb565 file harus disiapkan terlebih dahulu. Untuk mengonversi video, gunakan ffmpeg (http://ffmpeg.org). Unduh dan instal di komputer Anda. Kemudian gunakan contoh baris perintah ffmpeg, yang menampilkan video yang kompatibel dengan demo ini:
ffmpeg -i video.avi -s 320x240 -pix_fmt rgb565 video.rgb
Unduh dan instal perpustakaan yang diperlukan untuk bekerja dengan pelindung TFT untuk Arduino Nano:https://github.com/YATFT/YATFT.
Download sketsa berikut di Arduino Nano:
/****************************************** ************************************ PERANGKAT LUNAK DAN DOKUMENTASI DISEDIAKAN "SEBAGAIMANA ADANYA" TANPA JAMINAN APAPUN* JENIS, BAIK TERSURAT MAUPUN TERSIRAT, TERMASUK TANPA BATAS, JAMINAN* APAPUN UNTUK DIPERDAGANGKAN, JUDUL, NON-PELANGGARAN DAN KESESUAIAN UNTUK TUJUAN* TERTENTU. DALAM KEADAAN APA PUN PENULIS ATAU PEMBERI LISENSINYA TIDAK AKAN BERTANGGUNG JAWAB ATAU* DIWAJIBKAN BERDASARKAN KONTRAK, KELALAIAN, TANGGUNG JAWAB KETAT, KONTRIBUSI,* PELANGGARAN JAMINAN, ATAU TEORI SAMA HUKUM LAINNYA YANG TIDAK LANGSUNG ATAU TIDAK LANGSUNG TERHADAP KERUSAKAN SECARA TIDAK LANGSUNG ,* KERUSAKAN TIDAK LANGSUNG, HUKUMAN ATAU KONSEKUENSIAL, KEHILANGAN KEUNTUNGAN ATAU KEHILANGAN DATA,* BIAYA PENGADAAN BARANG PENGGANTI, TEKNOLOGI, JASA, ATAU* KLAIM APA PUN OLEH PIHAK KETIGA (TERMASUK NAMUN TIDAK TERBATAS PADA PIHAK KETIGA), .************************************************* ******************************/#termasuk // Perpustakaan khusus perangkat keras#termasuk #sertakan #sertakan YATFT tft(0);SDC sdc;#define CS_PIN A0// MOSI=11, MISO=12, SCK=13XPT2046_Touchscreen ts(CS_PIN);/* Jika menggunakan pelindung, semua jalur kontrol dan data diperbaiki, dan deklarasi yang lebih sederhana secara opsional dapat digunakan:*/uint16_t frame =0;uint32_t total_time =0;bool f_first =true;uint8_t mode =0;/*************************************** ************************************************** ******/pengaturan batal(batal){ Serial.begin(115200); // inisialisasi port serial Serial.println(F("Contoh Pemutaran Foto Dan Video!")); tft.begin(0x4391,-8); // inisialisasi tampilan tft.SetColor(BLACK); tft.ClearDevice(); // Bersihkan layar ts.begin(); // Init SPI Layar Sentuh.end(); Serial.print(F("FS Ini... ")); status uint8_t =sdc.FSInit(); if (status ==0) Serial.println(F("tidak berhasil.")); else Serial.println(F("berhasil.")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; total_time =millis() + 500;}void loop(void){ if (total_time 100 &&y<140) { // Stop mode =1; Serial.println(F("modus =1")); } else if (x>140 &&x<180 &&y>100 &&y<140) { // Mode jeda =2; // Gambar tombol tft.SetColor(MERAH); tft.DrawFillCirc(GetMaxX()/4,GetMaxY()/2,50); tft.SetColor(KUNING CERAH); tft.DrawFillRect(GetMaxX()/4-30,GetMaxY()/2-30, GetMaxX()/4+30,GetMaxY()/2+30); tft.SetColor(MERAH); tft.DrawFillCirc(GetMaxX()/4*3,GetMaxY()/2,50); tft.SetColor(KUNING CERAH); 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")); } else if (x>190 &&y>100 &&y<140) { // Mode putar =0; Serial.println(F("modus =0")); } modus kembali; } SPI.end(); mode kembali;}
Saya mencoba membuat artikel pendek dan menjelaskan poin-poin utama di dalamnya. Selain itu, tidak ada yang sulit dalam proyek ini. Tetapi jika Anda memiliki pertanyaan - tanyakan, jangan ragu.;-) Saya akan mencoba menambahkan artikel.
Terima kasih atas perhatiannya!
Bersambung.
Artikel sebelumnya:
1) Perisai TFT Unik untuk Arduino Uno - Mulai,
2) Perisai TFT Unik untuk Arduino Uno - Tampilan Langsung Cam OV7670,
3) Perisai TFT Unik untuk Arduino Uno - Kamera Bluetooth Arduino (ABC),
4) TFT Shield untuk Arduino Nano - Mulai.
Pembaruan 01.04.2021:
Halo lagi! Ada perpustakaan yang diperbarui untuk serangkaian layar, yang saat ini terdiri dari dua perisai dan dua papan breakout. Sketsa dikompilasi tergantung pada versi yang dipilih (dari 1 hingga 4) dan jenis mikrokontroler (MegaAVR atau ESP-32). Menambahkan foto, contoh. Informasi lebih lanjut dapat ditemukan di https://github.com/Ekaburg/EkaTFT.
Kode
PhotoAndVideoPlay.inoC/C++
/********************************************* ******************************** * PERANGKAT LUNAK DAN DOKUMENTASI DISEDIAKAN "SEBAGAIMANA ADANYA" TANPA JAMINAN * APAPUN, BAIK TERSURAT MAUPUN TERSIRAT, TERMASUK TANPA BATAS, JAMINAN APA PUN * UNTUK DIPERDAGANGKAN, HUKUM, NON-PELANGGARAN DAN KESESUAIAN UNTUK TUJUAN * TERTENTU. DALAM KEADAAN APA PUN PENULIS ATAU PEMBERI LISENSINYA TIDAK BERTANGGUNG JAWAB ATAU * DIWAJIBKAN BERDASARKAN KONTRAK, KELALAIAN, TANGGUNG JAWAB KETAT, KONTRIBUSI, * PELANGGARAN JAMINAN, ATAU TEORI Adil HUKUM LAINNYA YANG TIDAK LANGSUNG ATAU TIDAK LANGSUNG MENGHILANGKAN KERUSAKAN , * KERUSAKAN TIDAK LANGSUNG, HUKUMAN ATAU KONSEKUENSIAL, KEHILANGAN KEUNTUNGAN ATAU KEHILANGAN DATA, * BIAYA PENGADAAN BARANG PENGGANTI, TEKNOLOGI, JASA, ATAU * KLAIM APA PUN OLEH PIHAK KETIGA (TERMASUK NAMUN TIDAK TERBATAS DI ATAS SIMOFLARI) .************************************************* ******************************/#termasuk // Perpustakaan khusus perangkat keras#termasuk #sertakan #sertakan YATFT tft(0);SDC sdc;#define CS_PIN A0// MOSI=11, MISO=12, SCK=13XPT2046_Touchscreen ts(CS_PIN);/* Jika menggunakan pelindung, semua jalur kontrol dan data diperbaiki, dan deklarasi yang lebih sederhana secara opsional dapat digunakan:*/uint16_t frame =0;uint32_t total_time =0;bool f_first =true;uint8_t mode =0;/*************************************** ************************************************** *******/pengaturan batal(batal){ Serial.begin(115200); // inisialisasi port serial Serial.println(F("Contoh Pemutaran Foto Dan Video!")); tft.begin(0x4391,-8); // inisialisasi tampilan tft.SetColor(BLACK); tft.ClearDevice(); // Bersihkan layar ts.begin(); // Init SPI Layar Sentuh.end(); Serial.print(F("FS Ini... ")); status uint8_t =sdc.FSInit(); if (status ==0) Serial.println(F("tidak berhasil.")); else Serial.println(F("berhasil.")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; total_time =millis() + 500;}void loop(void){ if (total_time 100 &&y<140) { // Stop mode =1; Serial.println(F("modus =1")); } else if (x>140 &&x<180 &&y>100 &&y<140) { // Mode jeda =2; // Gambar tombol tft.SetColor(MERAH); tft.DrawFillCirc(GetMaxX()/4,GetMaxY()/2,50); tft.SetColor(KUNING CERAH); tft.DrawFillRect(GetMaxX()/4-30,GetMaxY()/2-30, GetMaxX()/4+30,GetMaxY()/2+30); tft.SetColor(MERAH); tft.DrawFillCirc(GetMaxX()/4*3,GetMaxY()/2,50); tft.SetColor(KUNING CERAH); 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")); } else if (x>190 &&y>100 &&y<140) { // Mode putar =0; Serial.println(F("modus =0")); } modus kembali; } SPI.end(); mode kembali;} Skema
Perisai TFT perpustakaan untuk Arduino Nano
https://github.com/YATFT/YATFT