Mencantumkan file kartu SD di Layar TFT Arduino

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 .


person Majid Laissi    schedule 31.12.2013    source sumber


Jawaban (2)


void printDirectory(File dir) {
  //------------------------------------------------------------
  dir.rewindDirectory(); // you need to rewind the the Directory
  //------------------------------------------------------------
  while(true) { 
    File entry =  dir.openNextFile();
    if (! entry) {
      break;
    }          
    Serial.println(entry.name());

  ..etc

  }
}

// bug masalah #904

person XBasic3000    schedule 29.04.2014
comment
Saya baru saja mengalami masalah ini dan ini berhasil untuk saya. - person XBasic3000; 29.04.2014

Nah, dalam fungsi ini:

void printDirectory(File dir) {
    while(true) {

        File entry =  dir.openNextFile();
        if (! entry) {
            dir.rewindDirectory();
            break;
        }
        else 
            entry.close();  //<-- We need to close the file here

        Serial.println(entry.name());
   }
}

File harus ditutup agar dapat dibaca nanti..

person Majid Laissi    schedule 31.12.2013