Arduino - TFT uppvisning av bilder från en SD kort (2 / 7 steg)
Steg 2: Bibliotek och exempel skisser (uppdaterad 2/4/15)
Du behöver bibliotek i bifogade zip-filen och SdFat biblioteket (ingår för bekvämlighet). Standardbiblioteket för SD kan användas men detta kräver mindre ändringar till skiss och fungerar långsammare.
De största förändringarna i ILI9341 biblioteket är att förbättra hastighet och lägga till funktionen pushColors(), en att hantera heltal matriser (för BMP ritning) och en för byte matriser (raw-bilder).
I zip formaterade filen hittar du en mapp som innehåller bilder, sätta dessa på en fett SD-kort för Arduino att läsa (inte i en katalog!). Du kan ändra de SD bibliotek exempel för att använda ovanstående stiften för att kontrollera en skiss kan komma åt filerna och ledningarna är bra. Om i trubbel inlägg en vädjan om hjälp... Jag kan ha gjort ett misstag eller kanske att hjälpa dig att få din setup går, ha i åtanke att det är svårt att felsöka stora problem genom att utbyta några meddelanden...
De flesta av bilden filer är i BMP-format, så det är kvar som en övning att konvertera dem till raw-format, ändra skissen och se förbättrade ritning hastigheten.
Exempel "ILI9341_draw_bitmap" (i mappen Adafruit_ILI9341_AS) skissen använder 90% av UNO FLASH och 54% av RAM för dynamisk lagring när sammanställts enligt IDE 1.6.1.
Bara aktivera teckensnitt 2 (eller andra små teckensnittsfil) eller UNO kommer slut på FLASH-minne!
Jag använder kompilator-O2 alternativet som i min Instructable här. Standard -Os alternativ kommer göra mindre kod bilder men det går långsammare (när IDE 1.6.1 används). IDE 1.0.6 sammanställt skisser inte får plats i en UNO som den gamla versionen av GCC-kompilatorn producerar snabbt men ganska stora körbara filer.
I kopiorna av arkiv i zip-filer F_AS_T är funktionshindrade och endast teckensnitt 2 är aktiverad, vara medveten om detta om du försöker andra skiss exempel!
Bilden ritning funktion är en del av skiss inte biblioteket, detta är avsiktligt eftersom det är alltför lätt att skapa ett heavyweight minne hungrig funktionen rika bibliotek som sätter en påfrestning på AVR baserade Arduinos kapacitet! Ja det är min ursäkt ;-) Vissa folk lösa detta genom att göra en enkel wrapper bibliotek som innehåller dessa funktioner och samtal lägre nivå bibliotek, så detta är ett alternativ för framtiden. Du kan klippa funktionen drawBMP() och bara använda drawRAW() för att spara lite utrymme.
Viktigaste dra funktion prototyper är:
void drawBMP (char * filnamn, int16_t x, int16_t y, booleska flip)
Den filen namnet måste vara i 8.3-format, se SD bibliotek dokumentation. x ochy är coords där den översta vänstra pixeln av bilden kommer att dras. Se det sista steget i detta Instructable för fungera av flaggan flip . Bredd och höjd på bilden extraheras från BMP-filen.
Motsvarande en för raw bitmappar är:
void drawRAW (char * filnamn, int16_t x, int16_t y, int16_t rawWidth, int16_t rawHeight)
Eftersom det finns bara pixeldata i denna fil bredd och höjd på bilden måste ges till funktionen.
Biblioteket och skiss är riktade på AVR processorer (UNO, Mega etc). Jag har inte en DUE, så planerar inte just nu att göra den kompatibel med ARM-processorer. Om någon skissen kör på FÖRFALLODAGAR vore det intressant att här hur presterar den, om SPI kan köras på 48MHz då en hela skärmen uppdatering skulle förmodligen kunna utföras i mindre än 100ms... Om du vill köra SPI på denna frekvens skulle du förmodligen behöver en digital logik nivå omvandlare.
Obs: På 2/4/15 bibliotek skissen har uppdaterats för att förbättra prestanda.
3/4/15: mindre bug fix