数据未保存在 Arduino SD 中

Data are not saved in the Arduino SD

我创建了一个获取温度测量数据并将其保存在变量中的代码。现在我想将数据保存在连接到 Arduino 的 SD 卡内的 .txt 文件中。 SD 的初始化有效,但是当它设法访问文件时它给我错误,给我写了一组奇怪的符号而不是文件名并且它没有写入文件。我尝试了一个非常相似的代码来写入 SD 并且它工作正常。会是什么问题?我附上了 SD 上的编写代码部分和带有输出的照片。 初始化部分:

Serial.println(F("Intializing SD card"));
if(!SD.begin(4))
{
  Serial.print(F("Initialization failed"));
  while(!SD.begin(4))
  {
    Serial.print(F("."));
    delay(1000);
  }
}
else Serial.println(F("Initialization done"));

写作部分:

sdFile = SD.open("records.txt",FILE_WRITE);
Serial.print("Writing to ");
Serial.println(sdFile.name());
sdFile.print(" Temperature: ");
sdFile.print(tempC);
sdFile.print(" taken at: ");
sdFile.print(hour());
sdFile.print(":");
sdFile.print(minute());
sdFile.print(":");
sdFile.println(second());

sdFile.close();

Image with the strange output

我怀疑您在 SD 卡有机会初始化之前打开它,要解决这个问题,请在开始时执行检查,如下所示:

if(!SD.begin(8)){ // Here, 8 is the CS (chip select) pin of your SD card.
Serial.println("initialization failed!");
    while (1);
}

sdFile = SD.open("records.txt",FILE_WRITE);

if(myFile){ // If we opened our file successfully!
// Write to our card here

}
sdFile.close();

这能解决您的问题吗?此外,请注意 Arduino 可以读取 SD 卡的大小限制。 full-size 卡通常为 2GB,“微型”卡通常为 16GB。

可以在 arduino 网站上找到其他文档以及示例 here