我正面临着SD卡和Arduino的特定问题。我想创建一个在SD卡上创建新文件的功能,用于不同的一天。现在,我正在使用整数模拟日历。我知道问题已经讨论过,但我似乎无法找到类似讨论的问题。
代码:
#include <stdlib.h> // included for floatToString
#include <math.h>
#include <SPI.h>
#include <SD.h>
int year = 2014;
int month = 11;
int day = 4;
char dateTitle[20]; //= "0000000000.txt";
void printDateTitle(char* dateTitle, int Y, int M, int D){
//char dateTitle[20];
sprintf(dateTitle, "%4d-%02d-%02d.txt", Y, M, D);
return;
}
const int chipSelect = 4;
void setup() {
//printDateTitle(dateTitle, year, month, day);
Serial.begin(9600);
while (!Serial) {
;
}
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
while (1);
}
Serial.println("card initialized.");
}
void loop() {
Serial.print(dateTitle);
delay(1000);
File dataFile = SD.open(dateTitle, FILE_WRITE);
if (dataFile){
dataFile.println("something");
dataFile.close();
Serial.print(day);
Serial.println("something");
delay(1000);
} else
Serial.println("Error");
}
在代码中,我有一个函数void printDateTitle
,它将日历中的输入格式化为字符串,我想将其用作文件的标题。
而且,当我在void loop()
中使用printDateTitle(dateTitle, year, month, day);
定义一个函数时,我在输出中得到一个“错误”,意思是SD.open = false。
问题是即使SD.open返回true,它也不会在SD卡上创建文件。 .txt包含在char数组中。我也用过资本.TXT。
我很感激有关这个问题的所有建议。
作为参考,我在Arduino IDE中使用Arduino Uno和Micro SD card Adapter。
答案 0 :(得分:2)
Arduino SD Library文档声明它使用“文件的短8.3名称”。因此,只有名称为8个字符,文件扩展名为3的文件才有效。例如:12345678.txt有效,123456789.txt无效。
你的日期字符串(2014-11-04.txt)很长,因为它有10个字符而不是8个字符。
还要确保已将SD卡格式化为FAT16或FAT32文件系统。