Slike s microSD kartice
Što ovaj primjer prikazuje
Čita dvije JPEG slike s microSD kartice i prikazuje ih jednu za drugom. Prva se crta prema imenu datoteke pomoću image.draw(), a druga preko objekta SdFile, na način biblioteke SdFat. Na kraju skica isključuje napajanje kartice radi uštede energije.
Prije prijenosa programa formatirajte karticu kao FAT i kopirajte picture1.jpg i picture2.jpg iz mape primjera u korijenski direktorij kartice. Komentar u zaglavlju skice navodi da slike mogu biti BMP, JPEG ili PNG i da moraju biti manje od 600 × 448 piksela da bi stale na zaslon.
Primjer koda
#include "Inkplate.h" // Include Inkplate library to the sketch
Inkplate display; // Create an object on Inkplate library and also set library into 3 Bit mode
SdFile file; // Create SdFile object used for accessing files on SD card
void setup()
{
// Init serial communication
Serial.begin(115200);
display.begin(); // Init Inkplate library (you should call this function ONLY ONCE)
display.clearDisplay(); // Clear frame buffer of display
display.setTextColor(BLACK); // Set text color to black
display.setTextSize(2); // Set font size to 2
// Init SD card. Display if SD card is init propery or not.
if (display.sdCardInit())
{
Serial.println("SD Card OK! Reading image...");
// If card is properly init, try to load image and display it on e-paper at position X=0, Y=0
// NOTE: Both drawImage methods allow for an optional fifth "invert" parameter. Setting this parameter
// to true will flip all colors on the image, making black white and white black. This may be necessary when
// exporting bitmaps from certain softwares.
if (display.image.draw("picture1.jpg", 0, 0, 1))
{
display.display();
delay(5000);
}
else
{
// If is something failed (wrong filename or wrong bitmap format), write error message on the Serial
// Monitor. REMEMBER! You can only use Windows Bitmap file with color depth of 1, 4, 8 or 24 bits with no
// compression! You can turn of dithering for somewhat faster image load by changing the last 1 to 0, or
// removing the 1 argument completely
Serial.println("Image open error");
}
// Now try to load image using SdFat library class (for more advanced users) and display image on epaper.
display.clearDisplay();
if (file.open("picture2.jpg", O_RDONLY))
{
display.image.drawJpegFromSd(&file, 0, 0);
display.display();
delay(5000);
}
else
{
Serial.println("Image open error");
}
}
else
{
// If SD card init not success, display error on screen
Serial.println("SD Card error!");
}
// Turn off the MOSFET that powers the SD card
display.sdCardSleep();
}
void loop()
{
// Nothing...
}
Komentar uz redak Inkplate display; spominje 3-bitni način rada; Inkplate 7SPECTRA ima samo svoj šestobojni način rada, a konstruktor ne prima način rada.
Korištene funkcije
Inkplate()returns NoneStvara objekt Inkplate. Inkplate 7SPECTRA ima jedan šestobojni način rada, pa konstruktor ne prima argument načina rada.
ReturnsKonstruktor; nema povratne vrijednosti.
display.begin()returns voidInicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite ga jednom u setup(); kasniji pozivi se zanemaruju.
ReturnsNišta.
display.clearDisplay()returns voidIspunjava međuspremnik slike bijelom bojom. Ne mijenja prikaz na zaslonu.
ReturnsNišta.
display.setTextColor(uint16_t c)returns voidPostavlja boju teksta. Ova skica ne ispisuje tekst na zaslonu, pa postavka ovdje nema vidljiv učinak.
ReturnsNišta.
display.setTextSize(uint8_t s)returns voidPostavlja uvećanje teksta. Kao i kod boje, ova skica ne ispisuje tekst na zaslonu.
ReturnsNišta.
display.sdCardInit()returns int16_tUključuje napajanje microSD kartice, pokreće njezinu SPI sabirnicu i montira karticu.
Returns1 ako je kartica inicijalizirana, 0 ako nije uspjelo.
display.image.draw(const char *path, int x, int y, bool dither = 1, bool invert = 0)returns boolOtvara datoteku slike na microSD kartici prema imenu i crta je u međuspremnik slike tako da joj je gornji lijevi kut u točki (x, y).
Returnstrue ako je slika nacrtana, false ako se datoteka nije mogla otvoriti ili dekodirati.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
const char * | path | Ime datoteke na kartici, ovdje "picture1.jpg". |
int | x, y | Gornji lijevi kut u pikselima. |
bool | dither | Primjenjuje dithering na sliku za šest boja zaslona. Zadano je 1. |
bool | invert | Invertira boje. Zadano je 0. |
display.image.drawJpegFromSd(SdFile *p, int x, int y, bool dither = 0, bool invert = 0)returns boolCrta JPEG iz datoteke koju ste već otvorili pomoću SdFat.
Returnstrue ako je slika nacrtana.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
SdFile * | p | Pokazivač na otvorenu datoteku. |
int | x, y | Gornji lijevi kut u pikselima. |
bool | dither | Zadano je 0. |
bool | invert | Zadano je 0. |
SdFile()returns NoneKlasa SdFat, uključena u biblioteku Inkplate: objekt datoteke na microSD kartici. Skica ga stvara kao `file`.
ReturnsKonstruktor; nema povratne vrijednosti.
file.open(path, mode)returns boolFunkcija biblioteke SdFat, uključena u biblioteku Inkplate: otvara datoteku na kartici. Skica prosljeđuje O_RDONLY kako bi je otvorila za čitanje.
Returnstrue ako je datoteka otvorena.
display.display(bool _leaveOn = 0)returns voidŠalje cijeli međuspremnik slike na zaslon i osvježava ga.
ReturnsNišta.
display.sdCardSleep()returns voidPostavlja SPI pinove kartice kao ulaze i isključuje napajanje kartice radi uštede energije u dubokom snu.
ReturnsNišta.
Što očekivati
Kada je kartica umetnuta, serijski monitor pri 115200 baud prikazuje:
SD Card OK! Reading image...
Zatim se picture1.jpg prikazuje na zaslonu 5 sekundi, a nakon nje picture2.jpg. Ako slika nedostaje ili se ne može pročitati, ispisuje se Image open error; ako se kartica ne uspije pokrenuti, ispisuje se SD Card error!.
🔗Otvorite cijeli primjer
examples/Inkplate7SPECTRA/Advanced/SD/Inkplate7SPECTRA_SD_Pictures