我建议你看看我的例子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