【esp32】SDcardの書き込みと読み込み
esp32を使ったSDcardの書き込みと読み込みのメモです。
書き込むのは簡単ですが読み込むにはサンプルスケッチの動作が安定しなかったので1バイトづつ読み込んでみました。
いきなりスケッチです
[php]#include <SD.h>
const uint8_t cs_SD = 5;
const char* f_name1 ="/data1.txt";
const char* f_name2 ="/data2.txt";
int bangou = 0;
File myFile1;
File myFile2;
String myfile;
void setup(){
Serial.begin(115200);
SD.begin(cs_SD);
delay(10);
if (!SD.begin(cs_SD)){
Serial.println("Card failed");
}else{
Serial.println("Card OK!");
}
}
void loop() {
bangou++;
//======================data1.txtに書き込む
myFile1 = SD.open(f_name1,FILE_APPEND);
delay(10);
myFile1.print(bangou);
myFile1.print(" : test kakikomi OK!");
delay(100);
myFile1.close();
delay(200);
//data1.txt内容を読み込みdata2.txtに書き込む
myFile1 = SD.open(f_name1, FILE_READ);
delay(10);
while (myFile1.available()) {
myfile += char(myFile1.read());
}
myFile1.close();
delay(100);
SD.remove("/data1.txt");
delay(200);
myFile2 = SD.open(f_name2,FILE_APPEND);
delay(10);
Serial.println(myfile);
myFile2.println(myfile);
delay(100);
myFile2.close();
delay(500);
myfile="";
}[/php]
SD書き込み 読み込み 結果
esp-wroom-32にarduinoIDEを使って書き込みました。
ツールからシリアルモニタを選択すると既に実行しています。
SDcardを取り出して、PCに挿してみます。
フォーマットしたてのSdcardにはdata1.txtとdata2.txtが作成されています。
data1.txtの内容です。
番号は121まで振られています。
data1.txtは書き込み、読み込み、削除を繰り返して121回目の書き込みですね。
では、data1.txtを読み込んで、その内容を書き込んだdata2.txtはどのようになっているか気になるところです。
おっ! 最初から記録されています。
そして、ずっと下の方は….
120まで書き込んでいます。121回目の書き込みはまだだったようです。
ということで、SDcardのdata1の内容を読み込んで、読み込んだ内容をdata2に書き込んでいくことが出来ました。
これで、センサーからのデータを記録して、記録されたデータを読み込むところまでesp32で出来るようになりました。