SD卡中的数据将其转换为阵列arduino?

时间:2014-08-14 18:06:24

标签: arrays arduino arduino-ide arduino-uno

我的数据位于SD卡的文本文件中,我正在尝试将其作为Arduino中的数组。我的数据只是一堆整数,每行看起来像270个数字。

122
50
255
0 
96

我有270个这样的数字。我只是想让Arduino创建一个270的数组,以便我可以使用这些数据。稍后,我将拉出一个元素放在某个地方,依此类推。根据给出的示例,我可以从SD卡读取数据。我很难将它创建成阵列。

这是我到目前为止所尝试的。在我的代码中,我想要String3_5的数组只给出了数字0到269递增。

#include <SD.h>
const int chipSelect = 4;
int String3_5 [270];
int index = 0;

void setup() {
  Serial.begin(9600);
  Serial.print("Initializing SD Card....");
  if(!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not Present");
    return;
  }
  Serial.println("Card Initialized");
  File dataFile = SD.open("Strip3_5.txt");
  if(dataFile) {
    while(dataFile.available()) {
      Serial.write(dataFile.read());
      String3_5[index] = Serial.read();
      index++;
      String3_5[index] = '\0';
    }
    dataFile.close();
  } else {
    Serial.println("File does not exist or named wrong");
  }
}

void loop() {
}

2 个答案:

答案 0 :(得分:0)

您的整数如何保存到文件中? ASCII?或二进制。您的代码目前所做的是读取8位值,将它们发送到UART /终端,然后读取终端并将一个字节保存到阵列中。我不认为这就是你想要的......

SD.read()

Read a byte from the file.
read() inherits from the Stream utility class.

线String3_5[index] = '\0';看起来更像是用于字符串的东西......

假设您的文件实际上是一个ASCII文件,您需要做的是实现读取ASCII数字的代码,将它们转换为整数,然后保存它。

答案 1 :(得分:0)

这些代码应该是您正在寻找的代码

File dataFile = SD.open("Strip3_5.txt");
if (datafile) {
  for (index = 0; index <= 9; index++) {
    int input = datafile.parseInt();
    String3_5[index] = input;
    Serial.println(input);
  }
  file.close();
}