#include <DHT.h>
#include <LiquidCrystal_I2C.h>;
LiquidCrystal_I2C lcd(0x27,16,2);
#define FAN_PIN 13 // pin relay
#define LAMP_PIN 8 // pin lampu
#define DHTPIN 9 // pin dht
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int h; //humidity
int t; //temperatur
int pir = 12;
int pirState = LOW;
int val = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.print("halo selamat datang");
dht.begin();
lcd.init();
lcd.backlight();
pinMode(FAN_PIN, OUTPUT);
pinMode(LAMP_PIN, OUTPUT);
pinMode(pir, INPUT);
}
void loop() {
// membaca nilai kelembaban dan temperature
h = dht.readHumidity();
t = dht.readTemperature();
// memunculkan nilai kelembaban dan temperatur di serial monitor
Serial.print("Kelembaban: ");
Serial.print(h);
Serial.print(" %, Temperature: ");
Serial.print(t);
Serial.println("celsius");
// memunculkan teks di lcd
lcd.setCursor(0,0);
lcd.print("Erwan Rezpector");
// memunculkan nilai temperature dio lcd
lcd.setCursor(0,1);
lcd.print("T");
lcd.print(t);
lcd.print("C");
// memunculkan nilai kelembaban di lcd
lcd.setCursor(11,1);
lcd.print("H: ");
lcd.print(h);
lcd.print("%");
// mengatur nyala dan matinya relay
if(t >20.0 || h <40.0){
digitalWrite(FAN_PIN, HIGH);
Serial.println("Fan nyala");
} else{
digitalWrite(FAN_PIN, LOW);
Serial.println("Fan mati");
}
// motion sensor coding
val = digitalRead(pir);
if(val == HIGH){
digitalWrite(LAMP_PIN, HIGH);
Serial.println("Lampu nyala");
if (pirState == LOW){
Serial.println("Gerakan Terdeteksi");
pirState = HIGH;
}
} else{
digitalWrite(LAMP_PIN, LOW);
Serial.println("Lampu mati");
if (pirState == HIGH){
Serial.println("Gerakan TIdak Terdeteksi");
pirState = LOW;
}
}
delay(1000);
}