#include <LiquidCrystal.h>
#include <DHT.h>

// 定義 DHT22 感測器
#define DHTPIN 2     // DHT22 資料針腳
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

// 初始化 LCD 顯示器
LiquidCrystal lcd(4, 5, 6, 7, 8, 9, 10);

void setup() {
  // 初始化 DHT22 感測器
  dht.begin();
  
  // 初始化 LCD 顯示器
  lcd.begin(16, 2);
  
  // 顯示歡迎信息
  lcd.setCursor(0, 0);
  lcd.print("Temp & Humidity");
  delay(2000);
  lcd.clear();
}

void loop() {
  // 讀取溫濕度數據
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  // 檢查是否讀取失敗,並顯示錯誤信息
  if (isnan(humidity) || isnan(temperature)) {
    lcd.setCursor(0, 0);
    lcd.print("Error reading ");
    lcd.setCursor(0, 1);
    lcd.print("sensor data");
    return;
  }

  // 顯示溫度
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.print(" C");

  // 顯示濕度
  lcd.setCursor(0, 1);
  lcd.print("Humidity: ");
  lcd.print(humidity);
  lcd.print(" %");

  // 延遲兩秒再更新數據
  delay(2000);
}