基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
Ethernet
サーボモーター
ステッピングモーター
キャラクタ液晶表示
SPI通信
I2C通信(Wire)
SD
SD(File操作)
周期処理(MsTimer2)
時計(RTC)
PPG(パルス生成)
WiFiEsp
ICS(シリアルサーボ)
FreeRTOS Tips
SD(File操作)
SDカードのファイルを操作するライブラリです。
available
- 概要
- 読み出せるデータがあるかどうか調べます。
- 文法
- file.available()
- パラメータ
- file: Fileクラスで作ったインスタンス(SD.open()のリターン)
- 戻り値
- 有効なバイト数。(int)
close
- 概要
- ファイルを閉じる。SDカードにデータきちんと書かれてから行ってください。
- 文法
- file.close()
- パラメータ
- なし
- 戻り値
- なし
flush
- 概要
- 未書き込みのデータをファイルに書き込みます。この処理はファイルクローズ時に自動で行われます。
- 文法
- file.flush()
- パラメータ
- なし
- 戻り値
- なし
peek
- 概要
- 1バイト読みますが、次回読む位置は変わりません。
- 文法
- file.peek()
- パラメータ
- なし
- 戻り値
- 読んだデータ。データがなければ-1を返す。
position
- 概要
- ファイルからの読み出し位置を取得します。
- 文法
- file.position()
- パラメータ
- なし
- 戻り値
- ファイル内の読み出し位置。(unsigned long)
- 概要
- ファイルにデータを送る。数字はそれぞれASCIIコードとしてデータを送る。例えば123は'1','2','3'として送られる。
- 文法
- file.print(data)
file.print(data, BASE) - パラメータ
- data: 文字列や数値
BASE: 基数(BYTE、BIN、DEC、HEX、OCT) - 戻り値
- 送ったバイト数。あまり読む必要はない。
println
- 概要
- ファイルに改行付きでデータを送る。数字はそれぞれASCIIコードとしてデータを送る。例えば123は'1','2','3'として送られる。
- 文法
- file.println(data)
file.println(data, BASE) - パラメータ
- data: 文字列や数値
BASE: 基数(BYTE、BIN、DEC、HEX、OCT) - 戻り値
- 送ったバイト数。あまり読む必要はない。
seek
- 概要
- ファイル内の新しい位置に移動します。位置は0からファイルサイズ内の必要があります。
- 文法
- file.seek(unsigned long pos)
- パラメータ
- pos: ファイルの先頭から数えた読み出し位置(unsigned long)
- 戻り値
- 成功したらtrue、失敗したらfalseを返す。
size
- 概要
- ファイルのサイズを取得します。
- 文法
- file.size()
- パラメータ
- なし
- 戻り値
- ファイルのサイズ(unsigned long)
read
- 概要
- ファイルから1バイト読み込みます。
- 文法
- file.read()
- パラメータ
- なし
- 戻り値
- データがあればデータを返します。ファイルの終わりに達していたら-1を返します。
write
- 概要
- ファイルにデータや文字列を書き込みます。
- 文法
- file.write(data)
file.write(*buf, len) - パラメータ
- data: データや文字列(char*)
buf: 書き込みデータ(unsigned char*)が格納されたバッファ
len: 書き込みたい長さ - 戻り値
- 書き込んだバイト数。あまり読む必要はない。
isDirectory
- 概要
- 開いているファイルオブジェクトが、ファイルかディレクトリか調べます。
- 文法
- file.isDirectory()
- パラメータ
- なし
- 戻り値
- ディレクトリならtrue、ファイルならfalseを返します。
openNextFile
- 概要
- ディレクトリ内の、次のファイルかフォルダを返します。
- 文法
- file.openNextFile()
- パラメータ
- なし
- 戻り値
- 該当するディレクトリ内の次のファイルかフォルダー。
rewindDirectory
- 概要
- ディレクトリの最初に戻します。openNextFile()と組み合わせて使われます。
- 文法
- file.rewindDirectory()
- パラメータ
- なし
- 戻り値
- なし
サンプルプログラム
ROSEボードの裏面にあるマイクロSDにアクセスして、書き込み、読み込み、サイズ調査、削除など、一連の動作を試すサンプルです。
#include <Arduino.h>
#include <SD.h>
void setup(){
Serial.begin(9600);
pinMode(PIN_LED1, OUTPUT);
pinMode(PIN_LED2, OUTPUT);
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){
digitalWrite(PIN_LED1, HIGH);
//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();
//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");
}
digitalWrite(PIN_LED1, LOW);
delay(400);
} else {
Serial.println("Failed to open file.");
digitalWrite(PIN_LED2, HIGH);
while(1);
}
}