#include "DHT.h"
// 定義 DHT 設置
#define DHTPIN 23 // DHT 感測器連接的數位腳
#define DHTTYPE DHT22 // 使用 DHT-22 (你可以改成 DHT11 如果使用該感測器)
DHT dht(DHTPIN, DHTTYPE);
// 定義 RGB LED 接腳
#define RED_PIN 22
#define GREEN_PIN 21
#define BLUE_PIN 19
void setup() {
// 初始化序列通訊
Serial.begin(9600);
// 初始化 DHT 感測器
dht.begin();
// 設定 RGB LED 為輸出
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop() {
// 讀取溫度(攝氏)
float temp = dht.readTemperature();
// 確認感測器是否正常工作
if (isnan(temp)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// 打印溫度到序列監控視窗
Serial.print("溫度: ");
Serial.print(temp);
Serial.println(" *C");
// 控制 RGB LED 根據溫度變化
if (temp > 26) {
// 溫度高於 26 度,點亮紅燈
setRGB(255, 0, 0);
} else if (temp >= 22 && temp <= 26) {
// 溫度在 22 到 26 度之間,點亮綠燈
setRGB(0, 255, 0);
} else {
// 溫度低於 22 度,點亮藍燈
setRGB(0, 0, 255);
}
// 等待 2 秒後再讀取下一次數據
delay(2000);
}
// 設定 RGB 顏色的函數
void setRGB(int redValue, int greenValue, int blueValue) {
analogWrite(RED_PIN, 255 - redValue); // 使用共陽極,所以值要反轉
analogWrite(GREEN_PIN, 255 - greenValue);
analogWrite(BLUE_PIN, 255 - blueValue);
}