#include "DHTesp.h"
#define LedMerah 23
#define LedKuning 19
#define LedHijau 18
unsigned long previousMillis,previousMillis2,previousMillis3;
unsigned int interval_Merah=500, interval_kuning=1000,interval_hijau=2000;
unsigned char LedState,LedState2,LedState3;
unsigned int interval_suhu = 1000; // 1000 ms = 1detik
//------------------------------------------------------------------------------
// dht variable dll
const int DHT_PIN = 15;
DHTesp dhtSensor;
//--------- lcd 20x4 ----------------
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 20, 4);
unsigned int Suhu;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LedMerah, OUTPUT);
pinMode(LedKuning, OUTPUT);
pinMode(LedHijau, OUTPUT);
digitalWrite(LedKuning, HIGH);
digitalWrite(LedHijau, HIGH);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Suhu: ");
LCD.setCursor(0, 1);
LCD.print("Kelembaban: ");
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval_Merah) // 500mS
{ // save the last time you blinked the LED
previousMillis = currentMillis;
if (LedState == LOW){ LedState = HIGH;}
else { LedState = LOW; }
digitalWrite(LedMerah,LedState);
}
//==============================================================
unsigned long currentMillis2 = millis();
if (currentMillis2 - previousMillis2 >= interval_kuning) // 2000mS
{ // save the last time you blinked the LED
previousMillis2 = currentMillis2;
if (LedState2 == LOW){ LedState2 = HIGH;}
else { LedState2 = LOW; }
digitalWrite(LedKuning,LedState2);
}
//------------DHT SEnsor program Get Data-----------------------------
unsigned long currentMillis3 = millis();
if (currentMillis3 - previousMillis3 >= interval_suhu) // 1000mS
{
previousMillis3 = currentMillis3;
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("-------------");
}
LCD.setCursor(6, 0);
LCD.print(Suhu); // nilai suhu dan humidity
//delay(500);
}