Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Embedded Arduino Mega的SD卡错误_Embedded_Arduino - Fatal编程技术网

Embedded Arduino Mega的SD卡错误

Embedded Arduino Mega的SD卡错误,embedded,arduino,Embedded,Arduino,我正在尝试运行一个简单的程序,使用Arduino Mega2560的spark fun的SD卡模块。这是我当前使用的程序: #include <SD.h> const int chipSelect = 10; void setup() { Serial.begin(9600); Serial.print("Initializing SD card..."); pinMode(53, OUTPUT); digitalWrite(10, HIGH); if (!S

我正在尝试运行一个简单的程序,使用Arduino Mega2560的spark fun的SD卡模块。这是我当前使用的程序:

#include <SD.h>

const int chipSelect = 10;

void setup()
{
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  pinMode(53, OUTPUT);
  digitalWrite(10, HIGH);
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
}

void loop()
{
  String dataString = "";

  for (int analogPin = 0; analogPin < 3; analogPin++) {
    int sensor = analogRead(analogPin);
    dataString += String(sensor);
    if (analogPin < 2) {
      dataString += ","; 
    }
  }

  File dataFile = SD.open("datalog.txt", FILE_WRITE);

  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    Serial.println(dataString);
  }  

  else {
    Serial.println("error opening datalog.txt");
  } 
}
#包括
常数int chipSelect=10;
无效设置()
{
Serial.begin(9600);
串行打印(“初始化SD卡…”);
pinMode(53,输出);
数字写入(10,高);
如果(!SD.begin(芯片选择)){
Serial.println(“卡故障或不存在”);
//不要再做任何事情:
返回;
}
Serial.println(“卡已初始化”);
}
void循环()
{
字符串dataString=“”;
用于(int-analogPin=0;analogPin<3;analogPin++){
int传感器=模拟读数(模拟引脚);
数据字符串+=字符串(传感器);
if(模拟引脚<2){
数据字符串+=“,”;
}
}
文件dataFile=SD.open(“datalog.txt”,文件写入);
如果(数据文件){
dataFile.println(数据字符串);
dataFile.close();
Serial.println(数据字符串);
}  
否则{
Serial.println(“打开datalog.txt时出错”);
} 
}
我收到的错误是: 初始化SD卡…卡失败或不存在 打开datalog.txt时出错

pinMode(53, OUTPUT);
digitalWrite(10, HIGH);


并试一试。

您是否有任何独立的确认,确认模块与Arduino之间的接线良好,并且所使用的引脚符合软件的预期(尤其是选择的线路)?您是否考虑过mega和uno上的硬件SPI引脚之间的差异?如果我更改引脚模式(53,输出),此代码适用于Arduino uno;至引脚模式(8,输出)。然而,当我尝试Mega2560时,我们遇到了问题。我昨天只是简单地看了一下文档,但我相信两块板之间的SPI引脚可能都不同,因此您可能需要检查一下,您是否真的将卡连接到了mega上的正确引脚。因此,实际上,我查看了两块板的SPI引脚。对于超级SPI:50(味增酱)、51(味增酱)、52(味增酱)、53(不锈钢)和Uno SPI:10(不锈钢)、11(味增酱)、12(味增酱)、13(不锈钢)。我的问题是你将如何连接它?我必须对代码进行更改还是必须对硬件进行更改????问题是sd卡模块位于整个arduino上,所以如果必须连接插脚53,我如何知道必须连接哪个插脚?我对arduino Mega不太熟悉,但听起来该屏蔽并不真正兼容Mega。您可以选择不进行物理连接,而只进行电气连接(或剪切和修改迹线)。(实际上,如果您确保将屏蔽连接到的管脚设置为输入,您可以简单地使用所需的SPI信号向管脚添加额外的飞线连接)。或者,您可以找到或修改草图,在任意管脚上使用bit bang SPI,而不是在硬件SPI外围设备的管脚上使用,但是这会更慢。
pinMode(53, OUTPUT);
digitalWrite(53, HIGH);