#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Wire.h>
#include <DHT.h>
#define DHT_PIN 3 // pin sensor DHT dihubungkan ke pin digital 2
#define DHT_TYPE DHT22 // sensor DHT yang digunakan adalah DHT22
DHT dht(DHT_PIN, DHT_TYPE); // inisialisasi objek dht
#define SERIAL_OPTION 0
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
int servoPin = 8;
int buzzer_pin = 11;
int trigger_pin = 12;
int echo_pin = 13;
int inputPin = 2;
int val = 0;
int time;
int distance;
Servo servo1;
void setup() {
pinMode(buzzer_pin, OUTPUT);
Serial.begin(9600);
servo1.attach(servoPin);
lcd.begin(16, 2);
pinMode(4,OUTPUT);
pinMode(8,OUTPUT);
pinMode(inputPin,INPUT);
pinMode (trigger_pin, OUTPUT);
pinMode (echo_pin, INPUT);
digitalWrite(3,OUTPUT);
dht.begin(); // inisialisasi sensor DHT
RTC.begin();
}
void loop() {
//Bagian RTC jam
DateTime now=RTC.now();
if (SERIAL_OPTION) {
Serial.print(now.year()); Serial.print("/");
Serial.print(now.month()); Serial.print("/");
Serial.print(now.day()); Serial.print(" ");
Serial.print(now.hour()); Serial.print(":");
Serial.print(now.minute()); Serial.print(":");
Serial.print(now.second()); Serial.print("\n");
}
lcd.setCursor(0,0); lcd.print("DATE: ");
lcd.print(now.year()); lcd.print("/"); lcd.print(now.month()); lcd.print("/"); lcd.print(now.day());
lcd.setCursor(0,1); lcd.print("TIME: ");
lcd.print(now.hour()); lcd.print(":"); lcd.print(now.minute()); lcd.print(":"); lcd.print(now.second());
delay(1000);
long duration, cm;
digitalWrite(trigger_pin, LOW);
delayMicroseconds(2);
digitalWrite(trigger_pin, HIGH);
delayMicroseconds(5);
digitalWrite(echo_pin, LOW);
duration = pulseIn(echo_pin, HIGH);
cm = duration * 0.034 / 2;
servo1.write(0);
lcd.clear();
//Bagian Sensor Suhu dan kelembapan
float temperature = dht.readTemperature();
lcd.setCursor(0,0);
lcd.print("Tmp:");
lcd.print(temperature);
if (temperature > 30) {
tone(buzzer_pin, 440);
delay(500);
noTone(buzzer_pin);
} else {
digitalWrite(buzzer_pin, LOW);
}
// Bagian sensor PIR
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(4, HIGH); // turn LED ON
lcd.setCursor(10,0);
lcd.print("ON");
delay(500);
Serial.println("Motion detected!");
} else {
digitalWrite(4, LOW); // turn LED OFF
lcd.setCursor(12,0);
lcd.print("OFF");
Serial.println("Motion ended!");
}
// Bagian sensor Jarak
if(cm < 40){
servo1.write(90);
lcd.setCursor(0,1);
lcd.print("Door:OPEN");
delay (500);
}
else {
servo1.write(0);
lcd.setCursor(0,1);
lcd.print("Door:CLOSED");
delay(500);
}
delay(2000);
//Serial.print(" : ");
//Serial.println(cm);
lcd.clear();
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
servo1:GND
servo1:V+
servo1:PWM
pir1:VCC
pir1:OUT
pir1:GND
bz1:1
bz1:2
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
rtc1:GND
rtc1:5V
rtc1:SDA
rtc1:SCL
rtc1:SQW
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND