/*************************************/
// 温湿度計
// Sensor: DHT11 Module
// Lcd: LCD1602-I2C Module
/*************************************/
#include < LiquidCrystal_I2C.h > // ライブラリのインクルード
#include < DHT.h >
LiquidCrystal_I2C lcd( 0x27, 16 , 2 ) ;// 0x27のアドレス,16列2行のLCDを使用
#define DHT_PIN 7 // DHT11のDATAピンをデジタルピン7に定義
//#define DHT_MODEL DHT11 // 接続するセンサの型番を定義する(DHT11やDHT22など)
#define DHT_MODEL DHT22 // DHT 22 (AM2302)
DHT dht( DHT_PIN, DHT_MODEL ) ; // センサーの初期化
void setup( ){
//Serial.begin( 9600 ) ; // シリアル通信の開始
dht.begin( ) ; // センサーの動作開始
lcd.init( ) ; // LCDの初期化
lcd.backlight( ) ; // LCDバックライトの点灯
lcd.setCursor( 0, 0 ) ; // カーソルの位置を指定
/***** データを一回読み飛ばし 一回目は不安定? *****/
float Humidity = dht.readHumidity( ) ; // 湿度の読み取り---DUMMY
float Temperature = dht.readTemperature( ) ; // 温度の読み取り(摂氏)---DUMMY
/********************************************* */
lcd.print( "Humid " ) ; // 文字の表示
lcd.print( "Temp " ) ;
}
void loop( ){
delay(5000 ) ; // センサーの読み取りを10秒間隔に
float Humidity = dht.readHumidity( ) ; // 湿度の読み取り
float Temperature = dht.readTemperature( ) ;// 温度の読み取り(摂氏)
if( isnan( Humidity ) || isnan( Temperature ) ){// 読み取りのチェック
Serial.println( "ERROR" ) ;
lcd.setCursor( 0, 1 ) ;
lcd.print( " ERROR " ) ;
return;
}
// シリアルモニタに温度&湿度を表示
//Serial.print( "Temp:" ) ;
//Serial.print( Temperature ) ;
//Serial.print( "[C]" ) ;
//Serial.print( " Humid:" ) ;
//Serial.print( Humidity ) ;
//Serial.println( "[%]" ) ;
// LCDに温度&湿度を表示
lcd.setCursor( 0, 1 ) ;
lcd.print( Humidity ) ;
lcd.print( "% " ) ;
lcd.print( Temperature ) ;
lcd.print( "C" ) ;
}