Arduino 不写入文件

Arduino not writing to file

我希望 arduino 在 ajax 调用时写入文件。 ajax 有效,但它不会写入文件。 ajax 处理程序中的所有其他代码都会执行。

void handle_ajax(){
int startUrlIndex= HTTP_req.indexOf("button");
int endUrlIndex = HTTP_req.indexOf(" HTTP");
String url = HTTP_req.substring(startUrlIndex, endUrlIndex);

int startButtonIndex = url.indexOf("device-") + 7;// 7 is length of device-, I really just want the number.
int endButtonIndex = url.indexOf("&");
String button = url.substring(startButtonIndex, endButtonIndex);

int startStateIndex = url.indexOf("state=") + 6; // 6 is length of state=, I really just want the number.
String state = url.substring(startStateIndex);

int device = button.toInt();
int newState = state.toInt();

dim_light(device, newState * 12);
write_config("", "text");
}

bool write_config(String line, String text){
configFile = SD.open("config.ini", FILE_WRITE);

if(configFile){
    configFile.write("Dipshit");
}
configFile.close();
Serial.println("Works.");
return true;
}

我没有发现所提供的代码有任何问题。

先检查基础知识:

  • SD 卡是标准 SD 卡或 SDHC 卡。
  • SD 卡格式化为 FAT16 或 FAT32 文件系统。
  • SD.begin() 命令中的 CS 引脚使用了正确的引脚。这取决于所使用的硬件。 http://www.arduino.cc/en/Reference/SDCardNotes
  • SPI 接线正确(大多数 Arduino 板上的引脚 11、12 和 13)。
  • 硬件 SS 引脚设置为输出(即使它不用作 CS 引脚)。

我从过去的经验中知道,这些小 Arduino 在读取和写入 SD 卡时可以很快 运行 从 SRAM 中取出。 读写示例程序单独使用UNOs SRAM的大约50%!!
要测试这是否是您的问题,运行 SD 卡 read/write 示例程序(在 SD.begin() 命令中使用正确的 CS 引脚)。如果这有效,那么问题很可能是您的 运行 超出了 SRAM。尝试使用 Arduino MEGA 2560,它具有 4 倍的 SRAM。

编辑:最新的Arduino IDE (v1.6.8) 实际上计算了全局变量使用了多少SRAM。它不考虑局部变量。

发现问题:内存

arduino在打开SD卡时内存不足导致失败。

如果其他人遇到同样的问题,您需要 300 或更多字节的 ram。通过串行打印检查这个 FreeRam()