Afficher photos JPEG et vidéos RGB565 sur écran TFT SPI 2,8″ avec Arduino Nano
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino Nano R3 | 1 |
| Écran TFT SPI 2,8″ 320×240 (avec tactile) | 1 |
| Carte micro SD > 1 Go (formatée FAT32) | 1 |
| Shield TFT pour Arduino Nano (breakout) | 1 |
À propos du projet
Introduction
Ce projet montre comment afficher des **images JPEG** (sans conversion préalable) et des **vidéos au format RGB565** sur un écran TFT SPI 320×240 piloté par un Arduino Nano. Une démo vidéo est disponible dans l'article original.
Matériel
Empilez : Nano → Shield TFT → Écran TFT. La carte SD s'insère dans le slot du shield. Voir article précédent « TFT Shield for Arduino Nano – Start » pour le montage détaillé.
Logiciel & préparation
Carte SD
- Format FAT32 obligatoire.
- Images JPEG : copiez-les directement (taille max recommandée : 2560×1920).
- Vidéos : conversion préalable en **RGB565 brut** via ffmpeg :
ffmpeg -i video.avi -s 320x240 -pix_fmt rgb565 video.rgb
Bibliothèques
- YATFT (fork pour écrans 320×240) : github.com/YATFT/YATFT
- XPT2046_Touchscreen (tactile)
- yasdc (lecture SD + décodage JPEG/RGB565)
Sketch principal – PhotoAndVideoPlay.ino
Le sketch parcourt la carte SD, détecte le type de fichier (JPEG ou .rgb) et l'affiche :
- **JPEG** : bascule l'écran en mode YUV, décode et affiche via
sdc.JPEGReadFromSD(). Pause 2 s entre images. - **RGB565 (vidéo)** : bascule en mode RGB, lit le flux brut par blocs via
sdc.RGBReadFromSD()avec callback tactileScanTouch()pour contrôler lecture (Stop / Pause / Play).
Le tactile permet :
- Zone gauche (x<130) : **Stop** (revient au mode diaporama)
- Zone centre : **Pause** (affiche boutons Play/Stop)
- Zone droite : **Play** (reprend la vidéo)
Extrait de code – Boucle principale
void loop() {
if (total_time < millis()) {
total_time = millis() + 2000;
if (f_first) {
if (-1 != sdc.FindFirst("*.*", ATTR_ARCHIVE, &sdc.nextFile)) f_first = false;
else total_time = 0;
} else {
if (sdc.GetFileType(sdc.nextFile.filename) == DEMO_FILE_TYPE_JPEG) {
// ... bascule YUV, décode JPEG, affiche ...
} else if (sdc.GetFileType(sdc.nextFile.filename) == DEMO_FILE_TYPE_RGB) {
// ... bascule RGB, lit vidéo RGB565 avec contrôle tactile ...
}
if (-1 == sdc.FindNext(&sdc.nextFile)) f_first = true;
}
}
}
Mise à jour 2021
Nouvelle bibliothèque unifiée **EkaTFT** (shields + breakouts, MegaAVR & ESP32) : github.com/Ekaburg/EkaTFT.
Processus de fabrication
- Transformer la fabrication par la mobilité : Solutions données, voix, vidéo et localisation
- Nouveau convertisseur HDMI-APIX3 pour tests vidéo automobile et ADAS
- DATA MODUL Lance l'Affichage TFT 23,1″ Ultra-Fin avec Contrôle Wi-Fi Intelligent
- Lecture de capteurs analogiques avec Raspberry Pi et Zabbix : Guide étape par étape
- Comment Installer l'Écran TFT 3,5″ Kuman sur RetroPie — Guide Étape par Étape
- K 2019 : machines recyclage de pointe et innovations emballage durable
- Comprendre les Désignations DN et PN sur les Brides : Guide Complet
- Écran 3D holographique à champ de lumière : vision nette sans distorsion pour la réalité augmentée
- Maîtriser les finitions de moulage par injection : normes SPI et VDI expliquées