在Arduino的DHT11模組中有提供溫度與濕度的感測器,有三隻接腳分別為數位訊號腳(S)、VCC、GND。
要使用程式來控制此模組時必須先上Arduino的網站下載官方所提供的函式庫 DHT.h函式庫下載,進入網站後點選 “Clone or download” >> “Download ZIP”,以及Adafruit的驅動程式也是要使用同樣的方式下載完成解壓縮才行。
下載完成後解壓縮,將 “DHT-sensor-library-master” 資料夾放入 /文件/Arduino/libraries 目錄底下即可,如下圖所示,在這個目錄之下要有兩個相關的驅動程式資料夾才行:
接線部分只需要將DHT11模組中S腳位接至Arduino 的第2腳(必須和程式中選擇的腳位相同),VCC與GND分別接至5V與GND。
接線完成後就可以開始寫程式了,
#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"); }
上傳完成後打開序列監控視窗,並將鮑率選擇為9600(必須和程式中相同),
成功在序列監控視窗觀看溫溼度資料後,結合 Unit11:LCD點陣液晶顯示模組操作實習 ,將溫溼度的資訊顯示在LCD模組上。
整合後的程式碼如下:
#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"); }
(16738)
你做的真好 對我很有幫助