Arduino SD卡 列出文件

时间:2021-01-18 19:23:26
/*
SD卡测试
这个例子展示了如何使用实用程序库
sd库是基于获取您的SD卡的信息。
非常有用的测试卡,当你不确定它是否工作。
电路:
*附在SPI总线上的SD卡如下:
* MOSI引脚11上的Arduino Uno / Duemilanove /,
* MISO引脚12上的Arduino Uno / Duemilanove /,
* CLK引脚13上的Arduino Duemilanove /联合国/,
** -取决于您的SD卡屏蔽或模块。
4引脚用于与其他Arduino实例的一致性
创建28三月2011
Limor Fried
改性9 APR 2012
Tom Igoe
*/
// 库:包括SD
#include <SPI.h>
#include <SD.h> // 使用sd实用程序库函数设置变量:
Sd2Card card;
SdVolume volume;
SdFile root; // 改变这个匹配你的SD盾或模块;
// Arduino以太网盾: 4
// Adafruit SD盾和模块:10
// 和SD盾:8
const int chipSelect = ; void setup()
{
// 打开串行通信并等待端口打开
Serial.begin();
while (!Serial) {
; // 等待串口连接
} Serial.print("\nInitializing SD card...");//初始化SD卡 //我们将使用实用程序库中的初始化代码。
//因为我们只是在测试卡是否有效!
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:");//初始化失败。需要检查的东西:
Serial.println("* is a card inserted?");//插卡了吗?
Serial.println("* is your wiring correct?");//你的线路正确吗?
Serial.println("* did you change the chipSelect pin to match your shield or module?");
//你改变ChipSelect引脚来匹配你的盾或模块?
return;
} else {
Serial.println("Wiring is correct and a card is present.");
//接线正确,并有一张卡片。
} // 打印的类型的卡
Serial.print("\nCard type: ");
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unknown");
} // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
//现在我们将尝试打开“音量”/ 'partition”应该是fat16和fat32
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
//无法找到FAT16/FAT32分区,NMAKE肯定你已经格式化卡
return;
} // print the type and size of the first FAT-type volume
//打印第一个脂肪类型的类型和大小。
uint32_t volumesize;
Serial.print("\nVolume type is FAT");//测定
Serial.println(volume.fatType(), DEC);
Serial.println(); volumesize = volume.blocksPerCluster(); //卷大小(字节): 集群是块的集合。
volumesize *= volume.clusterCount(); // 我们会有很多集群
volumesize *= ; //SD卡块总是512字节。
Serial.print("Volume size (bytes): ");//卷大小(字节):
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): ");//卷的大小(字节):
volumesize /= ;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): ");//卷的大小(MB):
volumesize /= ;
Serial.println(volumesize); Serial.println("\nFiles found on the card (name, date and size in bytes): ");
//卡上找到的文件(名称、日期和大小为字节):
root.openRoot(volume); // 列出日期和大小的卡片中的所有文件
root.ls(LS_R | LS_DATE | LS_SIZE);
} void loop(void) { }