Zum Hauptinhalt springen

Bilder von einer microSD-Karte

Was dieses Beispiel zeigt​

Liest zwei JPEG-Bilder von einer microSD-Karte und zeigt sie nacheinander an. Das erste wird mit image.draw() über den Dateinamen gezeichnet, das zweite über ein SdFile-Objekt, auf die SdFat-Art. Am Ende schaltet der Sketch die Versorgung der Karte ab, um Strom zu sparen.

Formatieren Sie die Karte vor dem Hochladen als FAT und kopieren Sie picture1.jpg und picture2.jpg aus dem Beispielordner in das Stammverzeichnis der Karte. Der Kommentar am Anfang des Sketches besagt, dass die Bilder BMP, JPEG oder PNG sein können und zur Darstellung kleiner als 600 × 448 Pixel sein müssen.

Beispielcode​

Select Board
Inkplate7SPECTRA_SD_Pictures.ino
#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...
}

Der Kommentar neben der Zeile Inkplate display; erwähnt einen 3-Bit-Modus; Inkplate 7SPECTRA hat nur seinen Sechs-Farben-Modus, und der Konstruktor erwartet keinen Modus.

Verwendete Funktionen​

Inkplate()returns None

Erstellt das Inkplate-Objekt. Inkplate 7SPECTRA hat einen einzigen Sechs-Farben-Modus, daher erwartet der Konstruktor kein Modus-Argument.

ReturnsKonstruktor; kein Rückgabewert.

display.begin()returns void

Initialisiert die Bibliothek, die Peripherie und den Framebuffer. Rufen Sie sie einmal in setup() auf; spätere Aufrufe werden ignoriert.

ReturnsNichts.

display.clearDisplay()returns void

Füllt den Framebuffer mit Weiß. Das Display wird dadurch nicht verändert.

ReturnsNichts.

display.setTextColor(uint16_t c)returns void

Legt die Textfarbe fest. Dieser Sketch gibt keinen Text auf dem Bildschirm aus, daher hat die Einstellung hier keine sichtbare Wirkung.

ReturnsNichts.

display.setTextSize(uint8_t s)returns void

Legt die Textvergrößerung fest. Wie bei der Farbe gibt dieser Sketch keinen Text auf dem Bildschirm aus.

ReturnsNichts.

display.sdCardInit()returns int16_t

Schaltet die Versorgung der microSD-Karte ein, startet deren SPI-Bus und bindet die Karte ein.

Returns1, wenn die Karte initialisiert wurde, 0, wenn dies fehlgeschlagen ist.

display.image.draw(const char *path, int x, int y, bool dither = 1, bool invert = 0)returns bool

Öffnet eine Bilddatei auf der microSD-Karte anhand des Namens und zeichnet sie mit ihrer oberen linken Ecke bei (x, y) in den Framebuffer.

Returnstrue, wenn das Bild gezeichnet wurde, false, wenn die Datei nicht geöffnet oder nicht dekodiert werden konnte.

Parameter

TypNameBeschreibung
const char *pathDateiname auf der Karte, hier "picture1.jpg".
intx, yObere linke Ecke in Pixeln.
boolditherRastert das Bild auf die sechs Farben des Displays. Standardwert ist 1.
boolinvertInvertiert die Farben. Standardwert ist 0.
display.image.drawJpegFromSd(SdFile *p, int x, int y, bool dither = 0, bool invert = 0)returns bool

Zeichnet ein JPEG aus einer Datei, die Sie bereits mit SdFat geöffnet haben.

Returnstrue, wenn das Bild gezeichnet wurde.

Parameter

TypNameBeschreibung
SdFile *pZeiger auf die geöffnete Datei.
intx, yObere linke Ecke in Pixeln.
boolditherStandardwert ist 0.
boolinvertStandardwert ist 0.
SdFile()returns None

SdFat-Klasse, in der Inkplate-Bibliothek enthalten: ein Dateiobjekt auf der microSD-Karte. Der Sketch erstellt eines mit dem Namen `file`.

ReturnsKonstruktor; kein Rückgabewert.

file.open(path, mode)returns bool

SdFat-Funktion, in der Inkplate-Bibliothek enthalten: öffnet eine Datei auf der Karte. Der Sketch übergibt O_RDONLY, um sie zum Lesen zu öffnen.

Returnstrue, wenn die Datei geöffnet wurde.

display.display(bool _leaveOn = 0)returns void

Sendet den gesamten Framebuffer an das Display und aktualisiert es.

ReturnsNichts.

display.sdCardSleep()returns void

Setzt die SPI-Pins der Karte auf Eingänge und schaltet die Versorgung der Karte ab, um im Deep Sleep Strom zu sparen.

ReturnsNichts.

Was Sie erwartet​

Mit eingesetzter Karte zeigt der Serial Monitor bei 115200 Baud Folgendes an:

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
SD Card OK! Reading image...

Dann erscheint picture1.jpg für 5 Sekunden auf dem Bildschirm, gefolgt von picture2.jpg. Ein fehlendes oder nicht lesbares Bild gibt stattdessen Image open error aus; eine Karte, die nicht startet, gibt SD Card error! aus.

🔗Vollständiges Beispiel öffnen

examples/Inkplate7SPECTRA/Advanced/SD/Inkplate7SPECTRA_SD_Pictures

→