---
# System prepended metadata

title: Arduino筆記-5
tags: [Arduino]

---

# Arduino筆記-5

**注意!必須使用Arduino IDE，因為mBlock不支援序列埠監控窗**

## 學習內容
1. 認識溫濕度感測器(DHT11)
2. 溫濕度感測器(DHT11)接線
3. 編寫溫濕度感測器(DHT11)程式

## 認識溫濕度感測器(DHT11)
DHT11是一款結合濕度計和測溫元件量測週遭空氣環境的感測器，
將所量測到的溫、濕度資料拆解成為數位訊號，
再由感測器接腳將資料送出。

抓取資料時必須要特別注意讀取時間的間隔，
每筆資料的讀取時間的間隔需要2秒鐘以上。

DHT11 的規格如下：
濕度測量範圍：20~90%;
濕度測量精度：±5%;
溫度測量範圍：0~50℃
溫度測量精度：±2℃
電源供應範圍： 3~5V
頻率不可超過：0.5Hz (每2秒一次)

## 溫濕度感測器(DHT11)接線
我們使用的DHT11模組有3個接腳，
分別為正極、負極、信號線，
每塊模組的順序都不太一樣，
要依照模組上方的標示進行接線
![image](https://hackmd.io/_uploads/BkwW0dbwC.png)

## 編寫溫濕度感測器(DHT11)程式
在編寫程式前需要安裝函式庫，

如果使用Arduino IDE
點選 工具 > 管理程式庫(**Ctrl+Shift+I**) >在搜尋欄中輸入**SimpleDHT**> 點選**安裝**
![image](https://hackmd.io/_uploads/r1g60rGw0.png)
接著打入以下程式碼
```ino=
#include <SimpleDHT.h>

int pinDHT11 = 9;
SimpleDHT11 dht11;
 
void setup() {
  Serial.begin(9600);
}

void loop() {
    byte temperature = 0;
    byte humidity = 0;
    int err = SimpleDHTErrSuccess;

    if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
       Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
       return;
    } 
    Serial.print("溫度: ");
    Serial.print((int)temperature);   
    Serial.print("°C ");
    Serial.print(",濕度:");
    Serial.print((int)humidity);  
    Serial.println("%");

    delay(2000);
}
```
編譯並上傳後，接著按下鍵盤的**Ctrl+Shift+M**
底下原本黑色的視窗就會變成這個白色的**序列埠監控窗**
接著就可以看到輸出的溫度和濕度
![image](https://hackmd.io/_uploads/BJOc0IGwR.png)







