JPEG Foto's en RGB565 Video op 2.8" TFT SPI Display met Arduino Nano
Onderdelen en Benodigdheden
| Arduino Nano R3 | 1 |
| 2.8" 320×240 SPI TFT Display (met touchscreen, bv. ILI9341) | 1 |
| Micro SD-kaart (>1 GB, FAT32) | 1 |
| TFT Shield voor Arduino Nano (breakout board) | 1 |
Over Dit Project
Inleiding
Dit project toont hoe u JPEG afbeeldingen en RGB565 video kunt afspelen op een 2.8" TFT SPI display (320×240) met een Arduino Nano. De afbeeldingen worden direct van de SD-kaart gelezen en gedecodeerd.
Hardware
Monteer de TFT shield op de Nano, steek de SD-kaart in de slot op de shield. Zie eerdere artikelen voor montage details.
Software Voorbereiding
SD-kaart Formatteren
Formateer als FAT32. JPEG bestanden kunnen direct gekopieerd worden (max resolutie ~2560×1920).
Video Converteren naar RGB565
Gebruik ffmpeg om video's om te zetten naar raw RGB565 formaat:
ffmpeg -i video.avi -s 320x240 -pix_fmt rgb565 video.rgb
Het resulterende .rgb bestand wordt frame-voor-frame uitgelezen en getoond.
Libraries
- YATFT (of EkaTFT) – hardware-specifieke TFT library: GitHub
- XPT2046_Touchscreen – touch controller
- yasdc – SD-kaart bestandsysteem en JPEG decoder (inbegrepen bij YATFT)
Code Functionaliteit
De sketch (PhotoAndVideoPlay.ino) doet het volgende:
- Initialiseert display, touchscreen, SD-kaart.
- Doorloopt alle bestanden op de SD-kaart.
- JPEG bestanden: Schakelt display naar YUV mode, decodeert en toont afbeelding (2 sec pauze).
- RGB565 bestanden: Schakelt display naar RGB mode, speelt video frame-voor-frame af met touchscreen bediening (Stop/Pauze/Play knoppen op scherm).
- Na afspelen alle bestanden: herstart cyclus.
Touchscreen Bediening (Tijdens Video)
- Links (Stop): Stopt afspelen, keert terug naar fotoweergave.
- Midden (Pauze): Toont pauze-knoppen, wacht op gebruikersactie.
- Rechts (Play): Hervat afspelen.
Belangrijke Code Fragmenten
Setup
void setup() {
Serial.begin(115200);
tft.begin(0x4391, -8); // Display initialiseren
tft.SetColor(BLACK);
tft.ClearDevice();
ts.begin(); // Touchscreen
SPI.end(); // SPI vrijmaken voor SD
sdc.FSInit(); // SD init
sdc.currentFileType = DEMO_FILE_TYPE_RGB;
}
Loop – Bestandsverwerking
void loop() {
if (timeElapsed) {
if (firstFile) sdc.FindFirst("*.*", ...);
else sdc.FindNext(...);
if (fileIsJPEG) {
if (currentMode != JPEG) { tft.SetYUV(); ... }
sdc.JPEGReadFromSD(&jpeg_decode, 0, 0, 320, 240);
} else if (fileIsRGB) {
if (currentMode != RGB) { tft.SetRGB(); ... }
sdc.RGBReadFromSD(pFile, &ScanTouch); // met touch callback
}
}
}
Update (01-04-2021)
Er is een bijgewerkte library beschikbaar voor een reeks schermen (2 shields, 2 breakouts) met ondersteuning voor MegaAVR en ESP32. Meer info: EkaTFT GitHub.
Productieproces
- Analoge Sensoren Uitlezen met Raspberry Pi en Zabbix: Een Stapsgewijze Handleiding
- Hoe de Kuman 3,5″ TFT-display op RetroPie te Installeren – Stap-voor-stap Handleiding
- Professionele gids voor bitmap-animatie op de ILI9341 2,4″ TFT Touchscreen Shield
- 3D RGB Arduclock – Bluetooth LED Tijdstuk met Real-Time Clock
- Holografische Lichtveld 3D Display: Helder, Verzerringsvrij Zicht Voor AR
- Nieuwe HDMI‑APIX3 converter geeft automotive video & ADAS-testing een boost
- DATA MODUL lanceert 23,1″ ultra‑slank TFT-display met slimme Wi‑Fi‑besturing
- Productie Transformeren met Mobiliteit: Data, Stem, Video en Locatie-oplossingen
- DN en PN Aanduidingen op Flenzen Begrijpen: Een Uitgebreide Gids
- K 2019 Toont Snijden‑Edge Recycling Machines en Duurzame Verpakkingsinnovaties
- Injectiegieten Afwerkingen: SPI & VDI Standaarden Uitgelegd