# HW FINAL_Arduino_溫度感測
>撰寫人[name=AmiYaku1049] [首頁--天空路1049號](https://skys-kid-lai.github.io/1004/)
>>最後編輯[time=Sat, Jun 25, 2022 9:09 PM]
___
## 實驗目的
透過DHT22感測器,配合Arduino UNO 開發版,將溫度與濕度量測結果顯示於ILI9341 2.8吋彩色面板。
## 實驗原理
使用 wokwi 模擬器及 Arduino UNO 開發版,運用DHT22溫溼度感測器並引用函式庫取溫度以及濕度的值,並將傳回的結果顯示於ILI9341 2.8吋彩色面板。
## 實驗材料
**◆透過WOKWI模擬器線上實作◆**
◎Arduino UNO 開發版 x1
◎ILI9341 2.8吋彩色面板 x1
◎DHT22 x1
◎跟你默契好的可愛電腦 x1
## 實驗步驟
1.在wokwi模擬器連接電路
2.在Library Manager載入需要的函式庫
2.在程式編譯區進行程式碼編譯(程式碼在下方↓)
3.確定程式碼無誤,即可開始模擬
4.紀錄輸出
### 需要的函式庫

### 電路連接完整圖

### 程式碼以及程式標註(已經過修改,並非為參考文獻內原始程式碼)
```clink= c
#include "dht.h" //載入標頭檔dht.h
#define DHTPIN 2
#define DHTTYPE DHT22
#include "SPI.h" //載入標頭檔SPI.h
#include "Adafruit_GFX.h" //載入標頭檔Adafruit_GFX.h
#include "Adafruit_ILI9341.h" //載入標頭檔Adafruit_ILI9341.h
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
dht DHT;
#define RED 0xF800 //設定顏色RED
#define YELLOW 0xFFE0 //設定顏色YELLOW
#define WHITE 0xFFFF //設定顏色WHITE
void setup() {
tft.begin();
}
void loop() {
delay(500);
tft.fillScreen(ILI9341_BLACK); //讓ILI9341顯示全黑
float t = DHT.temperature; //由DHT取溫度的值並傳回
float h = DHT.humidity; //由DHT取濕度的值並傳回
//在座標(0,90)位置畫一個長240寬65的方形,並設定邊框為黃色
tft.drawRect(0, 90, 240, 65, YELLOW);
if(DHT.read(DHTPIN) == DHTLIB_OK){
//設定顯示溫度、濕度
tft.setTextColor(ILI9341_WHITE); //設定為白色
tft.setTextSize(2); //設定字的大小
tft.setCursor(0,100); //設定位置座標
tft.print(" Temp: ");
tft.print(t);
tft.println(" C");
tft.println();
tft.setTextSize(2);
tft.print(" Humidity: ");
tft.print(h);
tft.println("%");
tft.println();
//當溫度大於或等於60度(t為第27行由DHT傳回的溫度值)
if(t >= 60){
tft.println();
tft.setTextColor(ILI9341_RED);
tft.setTextSize(2);
tft.print("Temperature above 60 degrees !");
}
}
}
```
## 實驗結果
**◎ wokwi實作設計畫面: [Final Home Work](https://wokwi.com/projects/335428327395295828)**
**◎ 起始畫面**
* 因為程式碼在loop的第二行顯示全黑,故一開始為黑屏狀態

**◎ 當溫度低於60度**
* 
**◎ 當溫度高於或等於60度**
* 
## 實驗討論
* **運作過程中,想要改變字體顏色**
我參考了[RGB Color Codes Chart](https://www.rapidtables.com/web/color/RGB_Color.html) 中的顏色值的16進制。
* **黃色的外框**
這是整個裡面最麻煩的部分,必須要調整他到最好的位置。 在程式碼第31行寫到說: ``` tft.drawRect(0, 90, 240, 65, YELLOW);```
第一個數值為外框位置在x軸位置,第二個數值為外框在y軸位置,第三個數值為外框的寬,第四個數值為外框的高。
## 實驗心得
顏色讓我很頭疼,找不到覺得很搭的顏色啊啊啊啊
## 實驗文獻
>編者:艾迪諾
>出版日期:2017.01.06
>書名(頁數):Arduino全能微處理機實習:強效解析(p10-18~p10-32)
>出版社:全華圖書
>[color=#CE0000]