SDカードは SPI 方式で接続可能なフラッシュメモリーです。容量は2GBまで可能で、大規模なメモリーが装備されていない組み込みコンピュータの記憶装置として利用できます。ここでは、小型のマイクロSDカードをソケットに差し込んで利用します。
#include <SD.h> SD.begin(CSPIN)SD.open(fname, FILE_WRITE); でファイルを書き込み用に開きます。fnameはファイル名です。この戻り値がファイル情報になります。これを myFile に受け取ります。同じ名前のファイルがない場合はファイルを作成します。myFile.println("testing 1, 2, 3."); でファイルに書き込みをします。同じ名前のファイルが存在する場合、そのファイル最後に追加をします。書き込みが終了したら close(); で閉じます。
char fname[20]="tet00.txt"; File myFile; myFile = SD.open(fname, FILE_WRITE); myFile.println("testing 1, 2, 3."); myFile.close();ファイルを読むには まず、SD.open(fname); でファイルを開きます。available(); でファイルが読み取り可能か確認できます。読み取りは read() を利用します。読み取りが完了したら close() します。
myFile = SD.open(fname); myFile.available(); myFile.read(); myFile.close();ファイルの存在は、exists(ファイル名)、削除はremove(ファイル名;) を利用します。同じ名前のファイルが存在する場合、あらかじめ削除しておかないと、古いファイルの最後に追加記録されます。
SD.exists(fname); SD.remove(fname);
//SD card //clk 14>>15, //MOSI 11>>12 //CS 9>>10 //HC7450 電源 1:3.3V 8:GND #include <SD.h> File myFile; int i; int CSPIN=10; char fname[20]="tet00.txt"; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); Serial.println("init SD card"); pinMode(CSPIN, OUTPUT); //CSPINはSDカードのcsを接続した端子番号 if (!SD.begin(CSPIN)) { Serial.println("device error"); return; } Serial.println("create new file"); if(SD.exists(fname)) { Serial.print("delete:"); Serial.println(fname); boolean ans=SD.remove(fname); } myFile = SD.open(fname, FILE_WRITE); // if the file opened okay, write to it: if (myFile) { Serial.println("Writing to"); myFile.println("testing 1, 2, 3."); myFile.println("success!"); for(i=0;i<50;i++){ myFile.print(i); myFile.print(','); myFile.println(i+1); } // close the file: myFile.close(); Serial.println("write done."); } else { // if the file didn't open, print an error: Serial.println("error creating test.txt"); } // re-open the file for reading: myFile = SD.open(fname); if (myFile) { Serial.println("open file"); //ファイルを表示する while (myFile.available()) { Serial.write(myFile.read()); } //ファイルを閉じる myFile.close(); } else { //open 失敗 Serial.println("error open"); } // } void loop() { }ファイルから読み取ったデータをシリアル出力しています。Arduino のモニタで確認してください。PCに接続できる SDードアダプタがあれば、PCでファイルの内容を確認できます。
init SD card create new file delete:tet00.txt Writing to write done. open file testing 1, 2, 3. success! 0,1 1,2 2,3 3,4 4,5 略