2017-03-04 13 views
1

書き込み機能が整数のみを受け入れる場合、測定データをマイクロSDカードに書き込む方法を教えてください。Arduinoのマイクロ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 ""; 
} 
+0

) 'を' long'として返し、関数 'String'(' return String(measurement); ')を返します。 –

答えて

0

あなたは、バッファとバイト数を受け入れるwrite機能のバリアントを使用して4バイトのlong値を書き込むことができます。ちょうどあなたが出て書きたい変数と型の大きさのアドレスを渡す:

long measurement; 

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

あなたはこのようにそれを読むことができます:あなたは `TP_init(の戻り値を宣言しているのはなぜ

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

どういう意味ですか、私はファイルを置くか、ファイルに書き込む機能に物を書きますか? –

+0

writeToFile関数は文字列を書き込むため、そこに置くことはできません。別の関数writeLongToFileまたは同様のものを書く – samgak

関連する問題