---
# System prepended metadata

title: Arduino 期末考 溫度警示

---

---
###### tag：`Arduino` `DHT22` `ILI9341`
---


# Arduino 期末考 溫度警示
[TOC]
* 系級：資工三乙
* 座號：16
* 姓名：王君翔
* 指導老師：林宏益


---



## 1.實驗步驟 Steps
* 本次實驗使用[模擬器](https://wokwi.com)進行操作 &nbsp;&nbsp; (With this [Emulator](https://wokwi.com), doing this experiment.)
* 要求：使用DHT22感測器，顯示溫度與濕度量測結果於ILI93412.8吋彩色面板
  * 當溫度超過60度,顯示警示畫面（警示畫面可以自由決定）。
  * 利用[wowki](https://wokwi.com)完成硬體接線與程式驗證
* requirment: Display the result(temperature & humidity) got from DTH22 on the ILI9341(320x240).
  * When the temperature is higher than 60°C, display warning screen.
  * Finish the circuit and program with [wowki](https://wokwi.com).
1. 依照電路圖連接電路 &nbsp;&nbsp;  (Connect the circuit according to the circuit diagram.)

![](https://i.imgur.com/eZWPtGm.png =300x350)
Δ電路圖 (Circuit Diagram)

2. 將以下程式完成後，透過USB線上傳至Uno板 (After completing the code block below, upload the file to Arduino Uno R3 with USB cable.)
``` C++=
#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(" %");
}


```
3. 進行模擬並紀錄實驗結果。 (Start simulation and record the result)


---


## 2.實驗結果 Result
![](https://i.imgur.com/eZWPtGm.png =600x500)
Δ接線完成圖 (Finished Circuit)

![](https://i.imgur.com/vdILV75.png =700x500)
<br>
![](https://i.imgur.com/T1qbuZE.png =700x500)

Δ運作圖 (Working)


[Link to my work](https://wokwi.com/projects/334509886070063698)

---