SDカードは SPI 方式で接続可能なフラッシュメモリーです。容量は2GBまで可能で、大規模なメモリーが装備されていない組み込みコンピュータの記憶装置として利用できます。ここでは、小型のマイクロSDカードをソケットに差し込んで利用します。


.png)


#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 略