#include <SD.h>
#include <SPI.h>
#include <DHT.h>

#define DHTPIN 2         // DHTセンサーのデータピン
#define DHTTYPE DHT22    // DHT22 (AM2302)
#define CSPIN 10         // SDカードのCSピン

DHT dht(DHTPIN, DHTTYPE);

File dataFile;

void setup() {
  Serial.begin(9600);
  dht.begin();

  // SDカードの初期化
  if (!SD.begin(CSPIN)) {
    Serial.println("SDカードの初期化に失敗しました!");
    return;
  }
  Serial.println("SDカードが見つかりました。");

  // データファイルの作成または開く
  dataFile = SD.open("data.txt", FILE_WRITE);
  if (!dataFile) {
    Serial.println("データファイルを開けませんでした!");
  }
}

void loop() {
  // 温度と湿度の取得
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // 測定結果をシリアルモニタに表示
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.println(" ℃");

  // データをSDカードに保存
  if (dataFile) {
    dataFile.print("Humidity: ");
    dataFile.print(h);
    dataFile.print(" %\t");
    dataFile.print("Temperature: ");
    dataFile.print(t);
    dataFile.println(" ℃");
    dataFile.flush(); // データの即時書き込み
  } else {
    Serial.println("データファイルに書き込めません!");
  }

  delay(2000); // 2秒ごとにデータを取得
}