# 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.紀錄輸出 ### 需要的函式庫 ![](https://i.imgur.com/vS5pSbK.png =70%x) ### 電路連接完整圖 ![](https://i.imgur.com/u8D9FpP.png =70%x) ### 程式碼以及程式標註(已經過修改,並非為參考文獻內原始程式碼) ```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的第二行顯示全黑,故一開始為黑屏狀態 ![](https://i.imgur.com/p0dJHN9.png =70%x) **◎ 當溫度低於60度** * ![](https://i.imgur.com/rL1d0lX.png =70%x) **◎ 當溫度高於或等於60度** * ![](https://i.imgur.com/tNuAlAM.png =70%x) ## 實驗討論 * **運作過程中,想要改變字體顏色** 我參考了[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]