#include <SPI.h>   // SPI通信用ライブラリ
#include <SD.h>    // SDカード制御用ライブラリ

// SDカードモジュールのCS(Chip Select)をD10に接続
const uint8_t PIN_SD_CS = 10;

void setup() {
  // PCとのシリアル通信を開始
  // 動作確認メッセージをシリアルモニタへ表示するために使う
  Serial.begin(9600);

  // シリアルポートの準備が整うまで待つ
  // UNOでは実質なくてもよいが、書いておくと他のボードでも使いやすい
  while (!Serial) { ; }

  Serial.println(F("SD test start"));

  // SDカードを初期化する
  // ここで失敗する場合は、配線ミスやSDカードの認識不良が考えられる
  if (!SD.begin(PIN_SD_CS)) {
    Serial.println(F("SD init failed"));
    return;   // 初期化に失敗したので，ここで処理を終了
  }

  Serial.println(F("SD init OK"));

  // TEST.TXT という名前のファイルを開く
  // FILE_WRITE を指定すると、ファイルが無ければ新規作成し、
  // 既にあれば末尾に追記する
  File f = SD.open("TEST.TXT", FILE_WRITE);

  // ファイルが開けなかった場合の処理
  if (!f) {
    Serial.println(F("file open failed"));
    return;   // ファイルを開けないので終了
  }

  // ファイルへ1行書き込む
  // F()マクロを使うと、文字列定数をRAMではなくフラッシュメモリに置ける
  f.println(F("Hello from Arduino Pro Mini"));

  // 書き込み内容を確実に保存するため、ファイルを閉じる
  f.close();

  Serial.println(F("write done"));
}

void loop() {
  // 今回は setup() で1回だけ動作確認すればよいので、loop() では何もしない
}
