/********************************************************************** * プロジェクトファイル名:ESP32S3_SD_TEST.ino * * ILI9328液晶モジュールに実装されているSDカードスロットに SDカードを挿入。 * SDカードのルートディレクトリの内容をリスト表示し、 * test.txtというファイルを作成・書き込み・読み込みを行う。 * * コントローラ:ESP32S3 Dev Module * 内蔵MPU:ESP32-WROOM-1:動作クロック周波数=240MHz(max) * * 2026/2/10 N.Ishii ***********************************************************************/ #include "FS.h" #include "SD.h" #include // SDカードのCSピンを定義 #define SD_CS 10 /// プロトタイプ宣言 void listDir(fs::FS &fs, const char * dirname, uint8_t levels); void createFile(fs::FS &fs, const char * path); void appendFile(fs::FS &fs, const char * path, const char * message); void readFile(fs::FS &fs, const char * path); //=========================================================================== void setup() { Serial.begin(115200); while (!Serial); // シリアルモニターが開くまで待機 Serial.println("\nInitializing SD card..."); // SDカードの初期化時にCSピンを指定 if (!SD.begin(SD_CS)) { Serial.println("Card Mount Failed"); return; } Serial.println("Card Mounted Successfully"); // SDカードの容量情報を表示 uint64_t cardSize = SD.cardSize() / (1024 * 1024); Serial.printf("SD Card Size: %lluMB\n", cardSize); // ルートディレクトリの内容をリスト表示 Serial.println("\nListing files in root directory:"); listDir(SD, "/", 0); // ファイルへの書き込みと読み込みの例 createFile(SD, "/test.txt"); appendFile(SD, "/test.txt", "Hello ESP32S3 and ILI9328 combo!"); readFile(SD, "/test.txt"); } void loop() { // 特に実行することはない } //====================================================================== void listDir(fs::FS &fs, const char * dirname, uint8_t levels) { Serial.printf("Listing directory: %s\n", dirname); File root = fs.open(dirname); if (!root) { Serial.println("Failed to open directory"); return; } if (!root.isDirectory()) { Serial.println("Not a directory"); return; } File file = root.openNextFile(); while (file) { if (file.isDirectory()) { Serial.print(" DIR : "); Serial.println(file.name()); if (levels) { listDir(fs, file.name(), levels - 1); } } else { Serial.print(" FILE: "); Serial.print(file.name()); Serial.print(" SIZE: "); Serial.println(file.size()); } file = root.openNextFile(); } } void createFile(fs::FS &fs, const char * path) { Serial.printf("Creating File: %s\n", path); File file = fs.open(path, FILE_WRITE); if (!file) { Serial.println("Failed to open file for writing"); return; } if (file.print("Initial content")) { Serial.println("File written"); } else { Serial.println("Write failed"); } file.close(); } void appendFile(fs::FS &fs, const char * path, const char * message) { Serial.printf("Appending to File: %s\n", path); File file = fs.open(path, FILE_APPEND); if (!file) { Serial.println("Failed to open file for appending"); return; } if (file.print(message)) { Serial.println("Message appended"); } else { Serial.println("Append failed"); } file.close(); } void readFile(fs::FS &fs, const char * path) { Serial.printf("Reading file: %s\n", path); File file = fs.open(path); if (!file) { Serial.println("Failed to open file for reading"); return; } Serial.print("Read from file: "); while (file.available()) { Serial.write(file.read()); } Serial.println(); file.close(); }