# **Arduino 期末考 溫度警示**
系級:資工三乙
學號:1110832095
姓名:鄭有程
指導老師:林宏益
### h31.實驗步驟(使用線上模擬器進行操作)
內容要求:
* 內容要求:使用DHT22感測器,將溫度與濕度量測的結果,顯示於ILI93412.8吋的彩色面板
* 當量測到的溫度超過60度時,顯示警示畫面。
* 利用wowki完成硬體接線與程式驗證
1. 電路圖:

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. 溫度過高時:

2. 溫度正常時:
