// 開發版選Wemos D1 R1
// 你可能需要安裝下列的函式庫 Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
#include "DHT.h"
#define DHTPIN D6 // D1 mini的接口請接D6
//切換你的溫溼度感應模組
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
dht.begin();
}
void loop() {
// 等待幾秒讓感測器感測一下溫溼度
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// 感測器的感測秒數需要等待超過2秒才會有新的數值 (DHT系列是很慢的感測元件)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("濕度Humidity: "));
Serial.print(h);
Serial.print(F("% 溫度Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F 體感溫度Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
}
如果你想要把溫溼度顯示在LED版上的話 就改裝一下就好
// 開發版選Wemos D1 R1
//溫溼度感測器相關
// 你可能需要安裝下列的函式庫 Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
#include "DHT.h"
#define DHTPIN D6 // D1 mini的接口請接D6
//切換你的溫溼度感應模組
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
//溫溼度感測器結束
//LED字幕相關
#include <Wire.h> // Arduino IDE 內建
// LCD I2C Library,從這裡可以下載:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
#include <LiquidCrystal_I2C.h>
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // 設定 LCD I2C 位址
//LED字幕結束
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
dht.begin();
lcd.begin(16, 2); // 初始化 LCD,一行 16 的字元,共 2 行,預設開啟背光
// 閃爍三次
for(int i = 0; i < 3; i++) {
lcd.backlight(); // 開啟背光
delay(250);
lcd.noBacklight(); // 關閉背光
delay(250);
}
lcd.backlight();
// 輸出初始化文字
lcd.setCursor(0, 0); // 設定游標位置在第一行行首
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0, 1); // 設定游標位置在第二行行首
lcd.print("davidou.org");
delay(8000);
// 告知使用者可以開始手動輸入訊息
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("System boot");
lcd.setCursor(0, 1);
lcd.print("Wait a sec..");
}
void loop() {
// 等待幾秒讓感測器感測一下溫溼度
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// 感測器的感測秒數需要等待超過2秒才會有新的數值 (DHT系列是很慢的感測元件)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("濕度Humidity: "));
Serial.print(h);
Serial.print(F("% 溫度Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F 體感溫度Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
lcd.setCursor(0, 0);
lcd.print("Humidity: " );
lcd.print( h,1);//顯示小數點後一位就好
lcd.print("%" );
lcd.setCursor(0, 1);
lcd.print("Temper: " );
lcd.print( t,1);
lcd.print(" C" );
}