如何将整数写入Arduino上的micro SD卡

时间:2017-03-04 23:14:40

标签: arduino microcontroller arduino-uno arduino-ide

当写入功能只接受整数时,如何让Arduino将测量数据写入micro SD卡?

#include <SD.h>
#include <SPI.h>

int CS_PIN = 10;
int ledPin = 13;
int EP =9;



File file;

void setup()
{

  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(EP, INPUT);

  initializeSD();



}


void loop(){
  long measurement =TP_init();
  delay(50);
 // Serial.print("measurment = ");
  Serial.println(measurement);

  createFile("test.txt");
  writeToFile(measurement);
  closeFile();
}



long TP_init(){
  delay(10);
  long measurement=pulseIn (EP, HIGH);  //wait for the pin to get HIGH and   returns measurement
  return  String(measurement);

}





void initializeSD()
{
  Serial.println("Initializing SD card...");
  pinMode(CS_PIN, OUTPUT);

  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
}

int createFile(char filename[])
{
  file = SD.open(filename, FILE_WRITE);

  if (file)
  {
    Serial.println("File created successfully.");
    return 1;
  } else
  {
    Serial.println("Error while creating file.");
    return 0;
  }
}

int writeToFile(char text[])
{
  if (file)
  {
    file.println(text);
    Serial.println("Writing to file: ");
    Serial.println(text);
    return 1;
  } else
  {
    Serial.println("Couldn't write to file");
    return 0;
  }
}

void closeFile()
{
  if (file)
  {
    file.close();
    Serial.println("File closed");
  }
}

int openFile(char filename[])
{
  file = SD.open(filename);
  if (file)
  {
    Serial.println("File opened with success!");
    return 1;
  } else
  {
    Serial.println("Error opening file...");
    return 0;
  }
}

String readLine()
{
  String received = "";
  char ch;
  while (file.available())
  {
    ch = file.read();
    if (ch == '\n')
    {
      return String(received);
    }
    else
    {
      received += ch;
    }
  }
  return "";
}

1 个答案:

答案 0 :(得分:1)

您可以使用接受缓冲区和字节计数的write函数的变体来写入4字节long值。只需传递要写出的变量的地址和类型的大小:

long measurement;

file.write((byte*)&measurement, sizeof(long)); // write 4 bytes

你可以这样读:

file.read((byte*)&measurement, sizeof(long)); // read 4 bytes