Arduino詳解その31です。前回の記事はこちらです。 hirocom777.hatenadiary.org
ファイルを操作する
前回はSDカード内のファイルやフォルダーの状態を把握しました。今回は、これらファイルやフォルダーを操作してみようと思います。
ファイルを作成する方法は前々回にご紹介しましたが、削除するにはどうしたらいいのでしょうか。また、ファルダーを作ったり、削除したりする方法も説明します。
ファイルの削除
まずはファイルの削除からです。以下のスケッチをご紹介します。
#include <SPI.h> #include <SD.h> void setup() { Serial.begin(9600); SD.begin(4); if (SD.remove("OLD_00.txt")) { Serial.println("OLD_00.txt削除しました"); } if (SD.remove("FOLDER/OLD_01.txt")) { Serial.println("FOLDER/OLD_01.txt削除しました"); } if (SD.remove("FOLDER/OLD_02.txt")) { Serial.println("FOLDER/OLD_02.txt削除しました"); } } void loop() { }
このスケッチは、SDカード内にある'OLD'で始まる名前の3つのファイルを削除します。削除に成功した場合には、シリアルモニターにメッセージを送ります。SDカード内はあらかじめPCで以下の様にファイルとフォルダーを作成しました。
D:. │ NEW_00.txt │ OLD_00.txt │ └─FOLDER NEW_01.txt OLD_01.txt OLD_02.txt
上のスケッチを書き込んでから、SDカードをセットしてシリアルモニターを開いてみると以下の様に表示しました。
OLD_00.txt削除しました FOLDER/OLD_01.txt削除しました FOLDER/OLD_02.txt削除しました
SDカードの中をPCで再確認してみると以下の様になっています。
D:. │ NEW_00.txt │ └─FOLDER NEW_01.txt
指定されたファイルが削除されています。 今回新しく出てきたものはこちらです。
* SD.remove()
ファイルを削除します。カッコ内に削除するファイル名を指定します。ファイルを指定する場合、フォルダーを含んで指定することもできます。この場合フォルダー名とファイル名を'/'で区切ります。削除に成功した場合はtrue、失敗した場合はfalseを返します。
フォルダーを作成/削除する
続いて、フォルダーの作成/削除方法を見てみましょう。以下のスケッチをご紹介します。
#include <SPI.h> #include <SD.h> void setup() { Serial.begin(9600); SD.begin(4); //ファルダ―削除 if (SD.rmdir("OLD_1")) { Serial.println("OLD_1を削除しました"); } if (SD.rmdir("OLD_2/OLD_3")) { Serial.println("OLD_2/OLD_3を削除しました"); } if (SD.rmdir("OLD_2")) { Serial.println("OLD_2を削除しました"); } //ファルダ―作成 if (SD.mkdir("NEW_1")) { Serial.println("NEW_1を作成しました"); } if (SD.mkdir("NEW_2/NEW_3")) { Serial.println("NEW_2とNEW_2/NEW_3を作成しました"); } if (SD.mkdir("NEW_2/NEW_4")) { Serial.println("NEW_2/NEW_4を作成しました"); } } void loop() { }
こののスケッチは、SDカードの中にある3つのフォルダーを削除して新しいフォルダーを作成します。削除、作成に成功した場合には、シリアルモニターにメッセージを表示します。SDカードの中は、以下の様に設定しました。
D:. ├─OLD_1 └─OLD_2 └─OLD_3
上のスケッチを書き込んでから、SDカードをセットしてシリアルモニターを開いてみると以下の様に表示しました。
OLD_1を削除しました OLD_2/OLD_3を削除しました OLD_2を削除しました NEW_1を作成しました NEW_2とNEW_2/NEW_3を作成しました NEW_2/NEW_4を作成しました
SDカードの中をPCで再確認してみると以下の様になっています。
D:. ├─NEW_1 └─NEW_2 ├─NEW_3 └─NEW_4
PCで作成されたファルダーは削除されて、新しいフォルダーができています。
* SD.mkdir()
フォルダーを作成します。'/'で区切ることで、フォルダー下のフォルダーも作成できます。上のスケッチでは'NEW_2'とその下にある'NEW_2'を同時に作成しています。すでにあるフォルダーの下にフォルダーを作成する場合も指定方法は同じです。作成に成功した場合はtrue、失敗した場合はfalseを返します。
* SD.rmdir()
フォルダーを削除します。'/'で区切ることで、フォルダー下のフォルダーも削除できます。削除するファルダーは空である必要があります。上の例では'OLD_2'は空ではないので、その下の'OLD_3'を削除した後に削除しています。削除に成功した場合はtrue、失敗した場合はfalseを返します。
SPI通信
いかがでしょうか。これでSDカードの操作についてはひととおりご紹介しました。これで、データや設定を記録、読み出しする機能をガシェットに搭載できますね。ところで今回使用したSDカード用ライブラリなのですが、SPI通信を使用していると冒頭でご紹介しました。次回はSPI通信についてご説明したいと思います。お楽しみに!!