Arduino讀取DHT sensor資料後可以輸出到com port監視畫面,
但這樣使用上很不方便,所以底下程式將讀取資料輸出到LCD上:
/*
使用1602A I2C LCD模組及函式庫
使用DHT11 Sensor讀取溫度與濕度
LCD I2C Library,從這裡可以下載:
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
本程式使用Newliquidcrystal_1.3.5版函式庫
作者:Lu yaku
日期:2018.04.15
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// DHT sensor系列程式庫下載
// http://github.com/adafruit/DHT-sensor-library
// 程式庫名稱為 DHT-sensor-library-master
// 注意:只下載此程式庫的話,編譯範例程式會出現錯誤,需下載以下程式庫並放入Arduino函式庫中
// https://github.com/adafruit/Adafruit_Sensor
// 程式庫名稱為 Adafruit_Sensor-master
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
// 初始化 DHT sensor
DHT dht(DHTPIN, DHTTYPE);
// 初始化 I2C 1602A LCD,I2C預設地址為0x27
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup() {
dht.begin();
lcd.begin(16, 2);
// 閃爍三次
for(int i = 0; i < 3; i++) {
lcd.backlight(); // 開啟背光
delay(250);
lcd.noBacklight(); // 關閉背光
delay(250);
}
lcd.backlight();
delay(250);
// 輸出初始化文字
lcd.setCursor(0, 0); // 設定游標位置在第一行行首
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0, 1); // 設定游標位置在第二行行首
lcd.print("LCD is Working!");
delay(2000);
}
void loop() {
//DHT11建議讀取時間間隔不小於1秒,DHT22建議讀取時間間隔不小於2秒,故設2秒為安全讀取時間
delay(2000);
//h等於濕度,t等於攝氏溫度,f等於華氏溫度
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
//檢查sensor是否正常,如不正常則在LCD上顯示 Sensor Error!
if (isnan(h) || isnan(t) || isnan(f)) {
// Serial.println("Failed to read from DHT sensor!");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Error!");
return;
}
//預設顯示攝氏溫度
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humidity:");
lcd.print(h);
lcd.print("%");
lcd.setCursor(4, 1);
lcd.print("Temp:");
lcd.print(t);
lcd.print((char)0xDF);
lcd.print("C");
//要顯示華氏溫度拿掉以下遮罩
//lcd.print(f);
//lcd.print((char)0xDF);
//lcd.print("F");
}
接線示意圖
相關照片
DHT11
Arduino
系統
LCD顯示
留言列表