#include <DHT.h>; //include library sensor dht22
#include <LiquidCrystal_I2C.h> // include library lcd 16x2 i2c
#include <Wire.h> // include library lcd 16x2 i2c
#define DHTPIN 7 // inisialisasi sensor dht di pin 7 arduino
#define buzzer 2 // inisialisasi buzzer di pin 2 arduino
#define pirPin 6 // inisialisasi sensor pir di pin 6 arduino
#define ledPin 3 // inisialisasi led di pin 3 arduino
#define DHTTYPE DHT22 // Type sensor DHT 22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2); // Mengatur alamat LCD.
int h; //variabel h untuk menyimpan nilai humidity
int t; //variabel t untuk menyimpan nilai temperatur
int val = 0; //membuat variabel
bool motionState = false; // dimulai dari tidak ada gerakan
void setup()
{
Serial.begin(9600); // Mulai komunikasi serial dengan kecepatan 9600:
pinMode(pirPin, INPUT); //sensor pir sebagai input
pinMode(ledPin, OUTPUT);//led sebagai output
pinMode(buzzer, OUTPUT);//buzzer sebagai output
Serial.println("Temperature and Humidity Sensor Test"); // menampilkan teks pada serial monitor
dht.begin();
lcd.init(); //inisialisasi lcd
lcd.backlight(); //menyalakan backlight pada lcd
}
void loop()
{
h = dht.readHumidity(); //membaca data dan memasukan variabel ke h (humadity)
t = dht.readTemperature();//membaca data dan memasukan variabel ke t (temperature)
val = digitalRead(pirPin); //membaca pirPin dan disimpan sebagai val
//menampilkan humadity dan temperatur pada serial monitor
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %, Temp: ");
Serial.print(t);
Serial.println(" ° Celsius");
// mengatur tekxs lcd pada cursor (0,0):
lcd.setCursor( 2, 0);
lcd.println(" Temperatur ");
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(t);
lcd.print("C");
lcd.setCursor(11, 1);
lcd.print("H:");
lcd.print(h);
lcd.print("%");
if (val == HIGH) { //jika val sama dengan high
digitalWrite(ledPin, HIGH); // LED akan hidup
digitalWrite(buzzer, HIGH); // buzzer akan hidup
delay(1500); //memberi jeda 1500milisecond
// motion state di fungsikan menjadi true (aada pergerakan):
if (motionState == false) { //jika motionstate sama dengan salah
Serial.println("Ada Pergerakan!"); // print teks pada serial monitor
motionState = true;
}
}
// Ijika tidak ada pergerakan (pirPin = LOW), maka:
else {
digitalWrite(ledPin, LOW); // LED akan mati
Serial.println("tidak Ada Pergerakan!"); // print teks pada serial monitor
delay(1500);//memberi jeda 1500 milisecond
// motion state diatur menjadi false (tidak ada pergerakan):
if (motionState == true) {
Serial.println("Motion ended!");// print teks pada serial monitor
motionState = false;
}
}
}