我建議你看看我的例子MP3 File Player和Web Player。
這裏有兩個問題:
1)您需要但從欣賞的Arduino沒有足夠的資源(SRAM)持有整個SdFAT的目錄列表點接近這一點。因此,我的方法是使用用戶控制檯保留列表。它將目錄內容與相應的數字一起轉儲到控制檯。用戶可以從中選擇他們希望輸入的號碼。同樣的,Web Player也做同樣的事情,但是當生成HTML時,它會生成指向相應列表項的鏈接。因此,該列表存儲在作爲瀏覽器或串行監視器的控制檯上。
2)默認提供的SD庫不足以做你想做的。最近Arduino將Bill Greiman’s SdFatLib納入引擎蓋類。但限制它。在使用Bill本地SdFat庫的地方,您可以使用其他方法來訪問單個對象,如getFilename()
,在SD中不可用。通過目錄時這是必需的。 sd.ls(LS_DATE | LS_SIZE)
只會直接轉儲到串行。你需要在哪裏訪問個人文件。正如下面顯示或in actual code
SdFile file;
char filename[13];
sd.chdir("/",true);
uint16_t count = 1;
while (file.openNext(sd.vwd(),O_READ))
{
file.getFilename(filename);
Serial.print(count);
Serial.print(F(": "));
Serial.println(filename);
count++;
}
file.close();
此外,還有被掩埋的公共方法由WebPlayer’s ListFiles()功能顯示引用訪問,以獲得文件的多個離散的處理。
你見過? [使用本地庫列出SD目錄內容?](http://forum.arduino.cc/index.php?topic=55851.0)。 – 2013-05-12 21:18:46
@SamRad是的。不幸的是,我無法得到該代碼爲我使用的SD卡工作。即使我已經獲得SD卡與其他SD示例一起工作,它仍然會在'if(!card.init(SPI_HALF_SPEED,chipSelect))'上失敗 – calccrypto 2013-05-13 01:58:54
您會得到什麼錯誤?如果失敗,他們建議使用if(!card.init(SPI_QUARTER_SPEED,chipSelect))。參見[SD.begin()返回false](http://forum.arduino.cc/index.php?topic=140770。5; wap2) – 2013-05-13 07:41:06