需要零件:Arduino板、面包板、跳線、50kΩ電位器、16×2 LCD 屏幕、DHT11溫濕度傳感器 所需程序庫: ·LiquidCrystal ·DHT 工作原理:本項目使用的濕度傳感器是相對廉價的DHT11,它測量濕度和溫度。它使用電容式濕度傳感器和電阻式溫度傳感器從其環境中讀取讀數。它將此讀數作為電壓發送到Arduino,Arduino將其轉換為屏幕上顯示的可讀值。為了獲得最佳效果,應該將溫濕度傳感器安裝在外墻上,并留有相當大的開放空間。需要你的LCD屏幕安裝在室內,以防止其受到環境因素的影響。
DHT11.jpg (148.21 KB, 下載次數: 64)
下載附件
2021-9-2 19:57 上傳
DHT11 數字溫濕度傳感器是一種集溫度、濕度一體的復合傳感器,它能把溫度和濕度物理測量通過溫、濕度敏感元件和相應電路轉換成方便計算機或者數據采集設備直接讀取的數字量,它具有校準數字信號輸出功能,采用單總線串行接口,輸出數據一共 5 個字節,分別表示:濕度整數位、濕度小數位、溫度整數位、溫度小數位及校驗和,其中校驗和為濕度與溫度之和的最低 8 位數據。
DHT11 數字溫度傳感器模塊共引出 3 個引腳,分別是地線 GND、電源Vcc 和數據線 S。 實際應用時,將 S 端接在 Arduino UNO 的一個數字輸入接口。 LCD1602 概述 液晶顯示器簡稱LCD(Liquid Crystal Display),其構造是在兩片平行的玻璃基板當中放置液晶盒,下基板玻璃上設置 TFT(薄膜晶體管),上基板玻璃上設置彩色濾光片,通過 TFT 上的信號與電壓改變來控制液晶分子的轉動方向,從而達到控制每個像素點偏振光射出的目的。
1602 液晶也叫 1602 字符型液晶,是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5×7 或者 5×11 等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到字符間距和行間距的作用。因此,1602 型液晶非常適合便攜式及低功耗測試設備。
LCD引腳.png (91.15 KB, 下載次數: 51)
下載附件
2021-9-2 20:00 上傳
構建 1.首先,按照前面“準備LCD屏幕”中的焊接說明準備好LCD屏幕。將DHT11傳感器插入面包板。當它的前面朝向你時,DHT11引腳從左側編號為1~4(或3)。將引腳1(VCC)連接到 +5V電源軌,將引腳2(DATA)直接連接到Arduino引腳8,將引腳4(或3)(GND)連接到GND。
DHT11連接圖.jpg (78.16 KB, 下載次數: 60)
下載附件
2021-9-2 20:00 上傳
LCD連接圖.jpg (82.43 KB, 下載次數: 51)
下載附件
2021-9-2 20:00 上傳
2.將LCD屏幕插入面包板,并將引腳連接到Arduino,如上表所示。GND和 +5V電源導軌將有多個連接。將LCD屏幕插入面包板。 3.將電位器插入面包板,將中心引腳連接到LCD引腳3,將一個外側引腳連接到 +5V導軌,另一側引腳連接到GND導軌。 4. 將面包板的電源軌連接到Arduino GND和 +5V。確認你的設置與圖中的接線圖相符,并上傳代碼。
連接圖5.jpg (169.38 KB, 下載次數: 51)
下載附件
2021-9-2 20:01 上傳
這個程序使用了Arduino IDE自帶的LiquidCrystal庫,以及需要從Arduino社區下載和安裝的DHT庫。DHT庫控制傳感器的功能,LCD庫在屏幕上顯示讀數。 相關代碼:
#include <LiquidCrystal.h>
#include"DHT.h" //調用 DHT 庫
#define DHTPIN 8 //連接到DHT的引腳
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define DHTTYPE DHT11 //定義 DHT 模塊類型
DHT dht(DHTPIN, DHTTYPE); //DHT.h 庫命令
void setup()
{
dht.begin(); //開啟傳感器
lcd.begin(16, 2); //LCD 屏幕是每行16個字符,一共兩行
}
voidloop() {
float h = dht.readHumidity(); //濕度值
float t = dht.readTemperature(); //溫度值
t = t * 9/5 + 32; //將讀數從攝氏度轉換成華氏度
if (isnan(t) || isnan(h)) //檢查DHT傳感器是否工作 { lcd.setCursor(0, 0);
lcd.print("Failed to read from DHT"); //如果DHT不工作,
//顯示這個
} else //否則在屏幕上顯示讀數
{ lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humidity: ");
lcd.print(h);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(t);
lcd.print("f");
}
}
|