基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
サーボモーター
ステッピングモーター
キャラクタ液晶表示
EEPROM
SPI通信
I2C通信(Wire)
メモリカード
メモリカード(File操作)
Ethernet
Ethernetサーバー
Ethernetクライアント
Firmata
周期処理
省電力
時計(RTC)
SoftwareSerial
ユーティリティ
メモリカードファイル操作(Fileクラス)
メモリカードをファイルクラスで操作できるライブラリです。
使用する場合は、#include <SD.h>
を記述して、File fileのようにインスタンス生成してください。
close
概要
ファイルを閉じる。ファイルオブジェクトを使い終わるときに、必ず呼び出してください。
文法
file.close
パラメータ
なし
戻り値
なし
available
概要
読み出せるデータがあるかどうか調べます。
文法
bool file.available()
パラメータ
なし
戻り値
データがあればtrue、なければfalseを返します。
read
概要
ファイルから1バイト読み込みます。
文法
int file.read()
パラメータ
なし
戻り値
データがあればデータを返します。ファイルの終わりに達していたら-1を返します。
write
概要
ファイルにデータや文字列を書き込みます。
文法
file.write(data)
file.write(*buf, len)パラメータ
data: データや文字列(char*)
buf: 書き込みデータ(unsigned char*)が格納されたバッファ
len: 書き込みたい長さ戻り値
なし
flush
概要
未書き込みのデータをファイルに書き込みます。
文法
file.flush()
パラメータ
なし
戻り値
なし
position
概要
ファイルからの読み出し位置を取得します。
文法
unsigned long file.position()
パラメータ
なし
戻り値
ファイルの先頭から数えた読み出し位置(バイト単位)。
seek
概要
ファイルからの読み出し位置を移動します。
文法
bool file.seek(unsigned long pos)
パラメータ
pos: ファイルの先頭から数えた読み出し位置(バイト単位)
戻り値
成功したらtrue、失敗したらfalseを返す。
概要
ファイルに数値や文字列を書き込みます。
文法
file.print(data)
file.print(data, BASE)パラメータ
data: 文字列や数値
BASE: 基数(BYTE、BIN、DEC、HEX、OCT)戻り値
なし
println
概要
ファイルに数値や文字列を改行付きで書き込みます。
文法
file.println(data)
file.println(data, BASE)パラメータ
data: 文字列や数値
BASE: 基数(BYTE、BIN、DEC、HEX、OCT)戻り値
なし
size
概要
ファイルのサイズを調べます。
文法
unsigned longfile.size()
パラメータ
なし
戻り値
ファイルのサイズ(バイト単位)
name
概要
開いているファイルの名前を調べます。
文法
char* file.name()
パラメータ
なし
戻り値
ファイル名を表す文字列
isDirectory
概要
開いているファイルオブジェクトが、ファイルかディレクトリか調べます。
文法
bool file.isDirectory()
パラメータ
なし
戻り値
ディレクトリならtrue、ファイルならfalseを返します。
openNextFile
概要
ディレクトリオブジェクトの場合、次のファイルオブジェクトを返します。
文法
File file.openNextFile()
パラメータ
なし
戻り値
次に該当するファイルオブジェクト。該当がなければfalseとして評価されるファイルオブジェクトを返します。
rewindDirectory
概要
ディレクトリの検索を最初に戻します。
文法
void file.rewindDirectory()
パラメータ
なし
戻り値
なし
サンプルプログラム
ファイルクラスを使用してメモリカードにアクセスするプログラムです。
#include <Arduino.h>
#include <SD.h>
void setup(){
Serial.begin(9600);
while(!Serial.available()); // wait to press key
Serial.read(); //dummy
if(!SD.begin()){
Serial.println("Card failed, or not present.");
while(1);
}
}
void loop(){
File file = SD.open("sample.txt", FILE_WRITE);
if(file){
//Write
Serial.println("Success to open sample.txt and write hello.");
file.println("Hello, my SD");
file.close();
//Read
file = SD.open("sample.txt", FILE_READ);
Serial.println("Reading file...");
while(file.available()){
Serial.print((char)file.read());
delay(50);
}
Serial.println();
//Size
Serial.print("File Size:");
Serial.println(file.size());
file.close();
digitalWrite(PIN_LED0, 0);
//Remove
Serial.println("Remove the file? y/n");
while(!Serial.available());
if(Serial.read() == 'y'){
SD.remove("sample.txt");
Serial.println("sample.txt has been removed");
}
delay(400);
} else {
Serial.println("Failed to open file.");
digitalWrite(PIN_LED0, 0);
while(1);
}
}