//國立臺東專科學校附設高職部電機科112學年度第2學期專題實作及程式設計教學劉明欽教師
//程式主題: DHT11 溫度感測器控制溫度使用Arduino UNO 晶片及LED 簡易控制。
// 班級: 電三 座號:14 姓名:許翊贊
#include "DHT.h" //練習,載入 DHT Library程式庫
#define DHTPIN 2 // 設定 DHT訊號線之腳位,連接到 DHT 感測器的數位引腳。
// #define DHTTYPE DHT11 定義 溫度感測器的類型如DHT 11
#define DHTTYPE DHT11
#define REDLED 3 //預先定義紅色 LED 接腳位置
#define GREENLED 4 //預先定義紅色 LED 接腳位置
#define BLUELED 5 //預先定義藍色 LED 接腳位置
#define RELAY 6 //預先定義 繼電器 接腳位置
//使用程式庫定義 感測裝置名稱(信號腳位,感測器型號)
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println("DHT11 test!"); //於序列步監控視窗顯示提示訊息
dht.begin(); //感測器裝置啟動致能
pinMode(REDLED,OUTPUT); //LED腳位設為輸出
pinMode(GREENLED,OUTPUT);
pinMode(BLUELED,OUTPUT);
pinMode(RELAY,OUTPUT); //繼電器腳位設為輸出
}
void loop() {
// Wait a few seconds between measurements.
delay(2000); //延時2秒
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity(); //浮點數變數 h 存放 讀取濕度數值
// Read temperature as Celsius (the default) 預設讀取的溫度是"攝氏"
float t = dht.readTemperature(); //浮點數變數 t 存放 讀取攝氏溫度數值
// Read temperature as Fahrenheit (isFahrenheit = true) 讀取華氏溫度時,參數=true
float f = dht.readTemperature(true); //浮點數變數 f 存放 讀取華氏溫度數值
// 以下判斷是否讀取失敗=(無濕度值或無攝氏值或無華氏值)
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!"); //顯示讀取失敗訊息
return; //脫離本函式且返回主程式
}
Serial.print("Humidity: ");
Serial.print(h); //顯示濕度值
Serial.print(" %\t"); //顯示單位且跳一個Tab格
Serial.print("Temperature: ");
Serial.print(t); //顯示攝氏溫度值
Serial.print(" °C = "); //顯示單位
Serial.print(f); //顯示華氏溫度值
Serial.println(" °F"); //顯示單位
if (t<25) //若 濕度大於80%,則
{
digitalWrite(REDLED,HIGH); //點亮共陽型紅燈
digitalWrite(GREENLED,LOW); //滅掉綠燈
digitalWrite(BLUELED,HIGH);
}
else if(t> 25 & t < 35) //若 濕度未大於80%,則
{
digitalWrite(REDLED,LOW); //滅掉紅燈
digitalWrite(GREENLED,HIGH); //點亮綠燈
digitalWrite(BLUELED,HIGH);
}
else{
digitalWrite(REDLED,LOW); //滅掉紅燈
digitalWrite(GREENLED,HIGH); //點亮綠燈
digitalWrite(BLUELED,HIGH);
}
}