【Arduino】溫濕度感測器與LCD模組

在Arduino的DHT11模組中有提供溫度與濕度的感測器,有三隻接腳分別為數位訊號腳(S)、VCC、GND。

DHT11模組

要使用程式來控制此模組時必須先上Arduino的網站下載官方所提供的函式庫 DHT.h函式庫下載,進入網站後點選 “Clone or download” >> “Download ZIP”,以及Adafruit的驅動程式也是要使用同樣的方式下載完成解壓縮才行。

下載完成後解壓縮,將 “DHT-sensor-library-master” 資料夾放入 /文件/Arduino/libraries 目錄底下即可,如下圖所示,在這個目錄之下要有兩個相關的驅動程式資料夾才行:

接線部分只需要將DHT11模組中S腳位接至Arduino 的第2腳(必須和程式中選擇的腳位相同),VCC與GND分別接至5V與GND。

接線完成後就可以開始寫程式了,

[code]

#include "DHT.h"    //載入函式庫
#define DHTPIN 2 //選擇讀取資料的腳位
#define DHTTYPE DHT11 // 在此範例中選用DHT 11

DHT dht(DHTPIN, DHTTYPE); //Initialize DHT sensor

void setup() {
Serial.begin(9600); //設定鮑率為9600
Serial.println("DHT11 test!");
dht.begin(); //啟動DHT
}

void loop() {
delay(2000); //每2秒鐘更新一次
float h = dht.readHumidity(); //讀取濕度
float t = dht.readTemperature(); //讀取攝氏溫度
float f = dht.readTemperature(true); //讀取華氏溫度

if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("無法從DHT模組讀取資料!");
return;
}
Serial.print("Humidity: "); //在序列監控視窗顯示溫度與濕度
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.println(" *F\t");
}

[/code]

上傳完成後打開序列監控視窗,並將鮑率選擇為9600(必須和程式中相同),

成功在序列監控視窗觀看溫溼度資料後,結合 Unit11:LCD點陣液晶顯示模組操作實習 ,將溫溼度的資訊顯示在LCD模組上。

整合後的程式碼如下:

[code]

#include "DHT.h"
#define DHTPIN 2 //選擇讀取資料的腳位
#define DHTTYPE DHT11 // 在此範例中選用DHT 11
#include "Wire.h"
#include "LiquidCrystal_I2C.h"

LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
DHT dht(DHTPIN, DHTTYPE); //Initialize DHT sensor

void setup() {
Serial.begin(9600); //設定鮑率為9600</strong>
Serial.println("DHTxx test!");
dht.begin(); //啟動DHT</strong>
lcd.begin(16,2);
lcd.backlight();
delay(2000);
}

void loop() {
delay(2000); //每2秒鐘更新一次
float h = dht.readHumidity(); //讀取濕度
float t = dht.readTemperature(); //讀取攝氏溫度
float f = dht.readTemperature(true); //讀取華氏溫度

if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("無法從DHT模組讀取資料!");
return;
}
Serial.print("Humidity: "); //在序列監控視窗顯示溫度與濕度
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.println(" *F\t");
//………………………….在LCD上顯示溫濕度資訊
lcd.setCursor(0, 0);
lcd.print(String("") + "H:" + h + "%");
lcd.setCursor(0, 1);
lcd.print(String("") + "T:"+ t + (char)223 + "C");
}
[/code]

One thought on “【Arduino】溫濕度感測器與LCD模組

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *