#include<Servo.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Wire.h>
#define SERIAL_OPTION 0
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
float value;
int tmp = A0;
int servoPin = 8;
int buzzer_pin = 11;
int trigger_pin = 12;
int echo_pin = 13;
int time;
int distance;
Servo servo1;
void setup()
{
pinMode(buzzer_pin, OUTPUT);
Serial.begin(9600);
servo1.attach(servoPin);
lcd.begin(16, 2);
pinMode(2,INPUT);
pinMode(4,OUTPUT);
pinMode(11,OUTPUT);
//pinMode(10,INPUT);
//pinMode(2,OUTPUT);
//pinMode(8,OUTPUT);
//pinMode(9,output);
//pinMode(11,OUTPUT);
//pinMode(13,OUTPUT);
//pinMode(14,OUTPUT);z
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
pinMode(A0,INPUT);
pinMode (trigger_pin, OUTPUT);
pinMode (echo_pin, INPUT);
digitalWrite(2,LOW);
digitalWrite(11,HIGH);
//digitalWrite(5,OUTPUT);
digitalWrite(3,OUTPUT);
digitalWrite(7,OUTPUT);
digitalWrite(11,OUTPUT);
digitalWrite(13,OUTPUT);
//digitalWrite(A0,OUTPUT);
RTC.begin();
}
void loop()
{
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, inches, cm;
digitalWrite(trigger_pin, LOW);
delayMicroseconds(2);
digitalWrite(trigger_pin, HIGH);
delayMicroseconds(5);
digitalWrite(echo_pin, LOW);
duration = pulseIn(echo_pin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
servo1.write(0);
if(cm < 40)
{
servo1.write(90);
lcd.setCursor(0,1);
lcd.print("Door:OPEN");
digitalWrite (buzzer_pin, HIGH);
tone(buzzer_pin, 1000);
delay (500);
noTone(buzzer_pin);
tone(buzzer_pin, 1000);
delay(500);
noTone(buzzer_pin);
delay(500);
}
else
{
servo1.write(0);
lcd.setCursor(0,1);
lcd.print("Door:CLOSED");
digitalWrite (buzzer_pin, LOW);
delay(500);
}
int pir = digitalRead(2);
if(pir == HIGH)
{
digitalWrite(4,HIGH);
lcd.setCursor(10,0);
lcd.print("LED:ON");
// delay(500);
}
else if(pir == LOW)
lcd.setCursor(12,0);
lcd.print("OFF");
{
digitalWrite(4,LOW);
}
value = analogRead(tmp)*0.004882814;
value = (value - 0.5) * 100.0;
lcd.setCursor(0,0);
lcd.print("Tmp:");
lcd.print(value);
delay(1000);
if(value > 20)
{
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
}
else
{
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
lcd.clear();
}
long microsecondsToInches(long microseconds) {
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}