数据未保存在 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。
我创建了一个获取温度测量数据并将其保存在变量中的代码。现在我想将数据保存在连接到 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。