Saya mengalami masalah saat mencoba membuat daftar file di kartu SD: Saya memiliki kode berikut:
#include <SPI.h>
#include <SD.h>
#include <TFT.h>
#define sd_cs 4
#define lcd_cs 10
#define dc 9
#define rst 8
TFT TFTscreen = TFT(lcd_cs, dc, rst);
PImage logo;
void intro() {
TFTscreen.begin();
TFTscreen.background(255, 255, 255);
TFTscreen.stroke(0, 0, 255);
TFTscreen.println();
TFTscreen.println("Welcome..");
delay(500);
}
void draw(char *imageName) {
TFTscreen.begin();
TFTscreen.background(255, 255, 255);
// Load the image file.
logo = TFTscreen.loadImage(imageName);
if (!logo.isValid()) {
Serial.println("error while loading the image");
}
if (logo.isValid() == false) {
return;
}
Serial.println("drawing image");
// draw the image to the screen
TFTscreen.image(logo, 0, 0);
}
void initSD() {
Serial.print("Initializing SD card...");
if (!SD.begin(sd_cs)) {
Serial.println("failed!");
return;
}
Serial.println("OK!");
}
void setup()
Serial.begin(9600);
intro();
initSD();
draw("2.bmp");
}
void loop() { }
Kode di atas berfungsi dengan baik, pesan "Selamat Datang" ditampilkan di layar, diikuti dengan tampilan gambar "2.bmp" seperti yang diharapkan. Output serial mencetak:
IniInitializing SD card...OK!
File size: 61496
Image Offset: 54
Header size: 40
Bit Depth: 24
Image size: 128x160
drawing image
Sekarang saya mencoba membuat daftar file di root kartu SD:
File root;
void listSD() {
root = SD.open("/");
printDirectory(root);
}
void printDirectory(File dir) {
while(true) {
File entry = dir.openNextFile();
if (! entry) {
dir.rewindDirectory();
break;
}
Serial.println(entry.name());
}
}
void setup() {
Serial.begin(9600);
intro();
initSD();
listSD(); //<- this function here
draw("2.bmp");
}
Tapi saya mendapatkan kesalahan file tidak ditemukan, tepat setelah folder root terdaftar:
Initializing SD card...OK!
1.BMP
2.BMP
loadImage: file not found: 2.bmp
error while loading the image
Bisakah Anda memberi tahu saya apa yang salah di sini? Saya menduga root = SD.open("/");
entah bagaimana mempengaruhi TFTscreen.loadImage(imageName);
tetapi saya tidak tahu bagaimana caranya.
Saya menggunakan Arduino UNO R3, dengan layar TFT LCD, versi IDE 1.5.5 .