Loading...

Learning   Examples | Foundations | Hacking | Links

示例 > SD 文件

使用 SD 库在 SD 卡上创建和删除文件

这个示例说明了怎样在 SD 卡上创建和删除文件。请点击这里获取 SD 库的更多信息。

硬件需求

  • Arduino 开发板
  • 以太网扩展板(Ethernet Shield),或其他具有 SD 插槽的扩展板
  • 已格式化的 SD 卡

电路

图片绘制采用 Fritzing. 更多的电路示例,请参考 Fritzing 项目页面

不需要电路,但是 Arduino 必须插上以太网扩展板(Ethernet Shield)并通过 USB 线和电脑连接。

代码

下面的代码适用于带有板载 SD 卡插槽的太网扩展板(Ethernet Shield)。在 setup() 函数中,SD.begin() 指定管脚 4 为 CS 管脚。程序中使用的管脚编号是根据你所使用的扩展板决定的。

setup() 函数中,使用 SD.open() 打开一个名为“example.txt”的新文件。FILE_WRITE 指明我们既可以读文件也可以写文件,从文件末尾开始读写。在例子中,我们在创建文件之后使用 myFile.close() 立即关闭文件。

使用 SD.exists() 检查文件确实存在之后,使用 SD.remove 从卡上删除文件。

/*
  SD 卡基本文件操作示例
 
 这个示例说明了怎样在 SD 卡上创建和删除文件
 电路:
 * SD 卡按如下方式连接到 SPI 总线
 ** MOSI - 管脚 11
 ** MISO - 管脚 12
 ** CLK - 管脚 13
 ** CS - 管脚 4
 
 创建日期:Nov 2010
 by David A. Mellis
 修改日期:2 Dec 2010
 by Tom Igoe
 
 此示例代码完全公开
     
 */

#include <SD.h>

File myFile;

void setup()
{
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  // 在以太网扩展板(Ethernet Shield)上,CS 管脚是管脚 4。它默认被设为输出管脚。
  // 注意,就算它并不用做 CS 管脚,
  // 硬件 SS 管脚(大多数 Arduino 开发板上是管脚 10,在 Mega 上是管脚 53)必须被留作输出,
  // 否则 SD 库无法工作。
  pinMode(10, OUTPUT);

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  if (SD.exists("example.txt")) {
    Serial.println("example.txt exists.");
  }
  else {
    Serial.println("example.txt doesn't exist.");
  }

  // 打开新文件并立即关闭:
  Serial.println("Creating example.txt...");
  myFile = SD.open("example.txt", FILE_WRITE);
  myFile.close();

  // 检查文件是否存在:
  if (SD.exists("example.txt")) {
    Serial.println("example.txt exists.");
  }
  else {
    Serial.println("example.txt doesn't exist.");  
  }

  // 删除文件:
  Serial.println("Removing example.txt...");
  SD.remove("example.txt");

  if (SD.exists("example.txt")){
    Serial.println("example.txt exists.");
  }
  else {
    Serial.println("example.txt doesn't exist.");  
  }
}

void loop()
{
  // 初始化完成之后,什么也不用做。
}

请参阅