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
#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 NoneErstellt 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 voidInitialisiert die Bibliothek, die Peripherie und den Framebuffer. Rufen Sie sie einmal in setup() auf; spätere Aufrufe werden ignoriert.
ReturnsNichts.
display.clearDisplay()returns voidFüllt den Framebuffer mit Weiß. Das Display wird dadurch nicht verändert.
ReturnsNichts.
display.setTextColor(uint16_t c)returns voidLegt 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 voidLegt die Textvergrößerung fest. Wie bei der Farbe gibt dieser Sketch keinen Text auf dem Bildschirm aus.
ReturnsNichts.
display.sdCardInit()returns int16_tSchaltet 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
| Typ | Name | Beschreibung |
|---|---|---|
const char * | path | Dateiname auf der Karte, hier "picture1.jpg". |
int | x, y | Obere linke Ecke in Pixeln. |
bool | dither | Rastert das Bild auf die sechs Farben des Displays. Standardwert ist 1. |
bool | invert | Invertiert die Farben. Standardwert ist 0. |
display.image.drawJpegFromSd(SdFile *p, int x, int y, bool dither = 0, bool invert = 0)returns boolZeichnet ein JPEG aus einer Datei, die Sie bereits mit SdFat geöffnet haben.
Returnstrue, wenn das Bild gezeichnet wurde.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
SdFile * | p | Zeiger auf die geöffnete Datei. |
int | x, y | Obere linke Ecke in Pixeln. |
bool | dither | Standardwert ist 0. |
bool | invert | Standardwert ist 0. |
SdFile()returns NoneSdFat-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 boolSdFat-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 voidSendet den gesamten Framebuffer an das Display und aktualisiert es.
ReturnsNichts.
display.sdCardSleep()returns voidSetzt 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:
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