# **Arduino 期末考 溫度警示** 系級:資工三乙 學號:1110832095 姓名:鄭有程 指導老師:林宏益 ### h31.實驗步驟(使用線上模擬器進行操作) 內容要求: * 內容要求:使用DHT22感測器,將溫度與濕度量測的結果,顯示於ILI93412.8吋的彩色面板 * 當量測到的溫度超過60度時,顯示警示畫面。 * 利用wowki完成硬體接線與程式驗證 1. 電路圖: ![](https://i.imgur.com/6j15ejW.png) 2. 程式: ``` #include <dht.h> #include "SPI.h" #include "Adafruit_GFX.h" #include "Adafruit_ILI9341.h" #define DHT_PIN 5 #define TFT_DC 9 #define TFT_CS 10 dht DHT; Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); double t = 0, h = 0; void display(); void display2(); void setup() { tft.begin(); tft.fillScreen(ILI9341_BLACK); } void loop() { if(DHT.read(DHT_PIN) == DHTLIB_OK){ if(DHT.temperature >= 60){ if(t != DHT.temperature || h != DHT.humidity){ t = DHT.temperature; h = DHT.humidity; tft.fillScreen(ILI9341_BLACK); display(); } }else if(t != DHT.temperature || h != DHT.humidity){ t = DHT.temperature; h = DHT.humidity; tft.fillScreen(ILI9341_BLACK); display2(); } } } void display(){ tft.setCursor(10, 2); tft.setTextColor(ILI9341_RED); tft.setTextSize(1); for(int i = 0; i < 37; i++) tft.print("-"); tft.setTextSize(3); tft.setCursor(5, 15); tft.print("|"); tft.setCursor(60, 15); tft.print("WARNING"); tft.setCursor(220, 15); tft.print("|"); tft.setCursor(10, 40); tft.setTextSize(1); for(int i = 0; i < 37; i++) tft.print("-"); tft.setCursor(10, 50); for(int i = 0; i < 37; i++) tft.print("-"); tft.setCursor(10, 315); for(int i = 0; i < 37; i++) tft.print("-"); for(int i = 52; i < 314; i++){ tft.setCursor(10, i); tft.print("|"); tft.setCursor(225, i); tft.print("|"); } tft.setTextColor(ILI9341_YELLOW); tft.setCursor(20, 70); tft.setTextSize(2); tft.print("Temperature: "); tft.setTextColor(ILI9341_RED); tft.setCursor(20, 90); tft.print(t); tft.print(" "); tft.setTextSize(1); tft.print("o"); tft.setTextSize(2); tft.print("C"); tft.setTextColor(ILI9341_YELLOW); tft.setCursor(20, 130); tft.print("Humidity: "); tft.setTextColor(ILI9341_WHITE); tft.setCursor(20, 150); tft.print(h); tft.print(" %"); tft.setTextColor(ILI9341_YELLOW); tft.setCursor(20, 190); tft.print("Current"); tft.setCursor(20, 210); tft.print("Temperature"); tft.setCursor(20, 230); tft.print("Is Higher Than"); tft.setCursor(20, 250); tft.setTextColor(ILI9341_RED); tft.print("60 "); tft.setTextSize(1); tft.print("o"); tft.setTextSize(2); tft.print("C"); tft.setTextColor(ILI9341_YELLOW); tft.print("."); } void display2(){ tft.setTextSize(1); tft.setTextColor(ILI9341_GREEN); tft.setCursor(10, 50); for(int i = 0; i < 37; i++) tft.print("-"); tft.setCursor(10, 315); for(int i = 0; i < 37; i++) tft.print("-"); for(int i = 52; i < 314; i++){ tft.setCursor(10, i); tft.print("|"); tft.setCursor(225, i); tft.print("|"); } tft.setTextColor(ILI9341_YELLOW); tft.setCursor(20, 70); tft.setTextSize(2); tft.print("Temperature: "); tft.setTextColor(ILI9341_WHITE); tft.setCursor(20, 90); tft.print(t); tft.print(" "); tft.setTextSize(1); tft.print("o"); tft.setTextSize(2); tft.print("C"); tft.setTextColor(ILI9341_YELLOW); tft.setCursor(20, 130); tft.print("Humidity: "); tft.setTextColor(ILI9341_WHITE); tft.setCursor(20, 150); tft.print(h); tft.print(" %"); } ``` ### **結果:** [Wowki連結](https://wokwi.com/projects/334509886070063698) 1. 溫度過高時: ![](https://i.imgur.com/ZC6U380.png) 2. 溫度正常時: ![](https://i.imgur.com/g9K27Wy.png)