第8天我將結合lcd及溫溼度感應器來製作溫度器。
那首先是這次需要的模組
溫溼度感應器
接線圖
通常都實連接5v的電壓不過我懶的接麵包版所以就連接了3.3v,目前看來是能正常運作。
實體圖
再來是arduino部分
首先我需要先下載函數庫,可以在這輸入dht11去查詢溫溼度感應器的函數庫。
再來就可以導入函數庫,lcd的部份一樣,dht(2,11)代表的是腳位跟溫室度感應器的版本,這邊我使用的是腳位2及dht 11版本。
再來就是開啟lcd跟溫溼度感應器。
接著我建立了三個浮點代數去儲存溫濕度的回傳值,下面是沒有接收到值得回傳值。
再來將lcd的顯示設定好就可以上傳程式。
沒出錯的話就會看到lcd顯示溫溼度值了
程式碼
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(2,11); //Initialize DHT sensor
void setup() {
Serial.begin(9600);
Serial.println("DHT11 test!");
dht.begin();
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("START RH.");
lcd.setCursor(0, 1);
lcd.print("START TMP");
}
void loop() {
delay(1000);
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.clear();
lcd.setCursor(0, 0);
lcd.print("RH :");
lcd.setCursor(7, 0);
lcd.print(h);
lcd.setCursor(14, 0);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temp:");
lcd.setCursor(7, 1);
lcd.print(t);
lcd.setCursor(13, 1);
lcd.print((char)223);
lcd.setCursor(14, 1);
lcd.print("C");
}