//Written by Abdul Qayum bin Sharudin, Arif Hakimi bin Mohd Jalaludin,
// Amirul Nur Akmal, Kanaapathi Darshan.
//Smart Window Project
#include <LiquidCrystal.h>
#include <Servo.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
Servo myservo;
int pos = 0;
int inputPin = 2;
int pirState = LOW;
int val = 0;
void setup()
{
pinMode(inputPin, INPUT);
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
lcd.begin(16,2);
lcd.setCursor(3, 0);
lcd.print("Welcome to");
lcd.setCursor(2,2);
lcd.print("Smart Window");
myservo.attach(3);
delay(2000);
}
void loop()
{
val = digitalRead(inputPin);
const float BETA = 3950;
int analogValue = analogRead(A0);
int analogValueout = analogRead(A1);
int celsiusin = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
int celsiusout = 1 / (log(1 / (1023. / analogValueout - 1)) / BETA + 1.0 / 298.15) - 273.15;
if (val == HIGH)
{
if (pirState == LOW)
{
tone(4, 1100, 36000000);
digitalWrite(LED_BUILTIN, HIGH);
myservo.write(0);
lcd.begin(16, 2);
lcd.print("Motion Detected!");
lcd.setCursor(2, 2);
lcd.print("RESET System");
delay(99999999999);
}
}
if (celsiusout>40)
{
lcd.begin(16,2);
lcd.setCursor(1, 0);
lcd.print("Window Closed!");
lcd.setCursor(1, 2);
lcd.print("Out:");
lcd.setCursor(5, 2);
lcd.print(celsiusout);
lcd.setCursor(7,2);
lcd.print("C");
lcd.setCursor(9,2);
lcd.print("In:");
lcd.setCursor(12,2);
lcd.print(celsiusin);
lcd.setCursor(14,2);
lcd.print("C");
if(pos+=45)
{
myservo.write(0);
delay(300);
}
else if(pos+=0)
{
delay(300);
}
else
{
delay(300);
}
}
else if (celsiusin<25)
{
lcd.begin(16,2);
lcd.setCursor(1, 0);
lcd.print("Window Closed!");
lcd.setCursor(1, 2);
lcd.print("Out:");
lcd.setCursor(5, 2);
lcd.print(celsiusout);
lcd.setCursor(7,2);
lcd.print("C");
lcd.setCursor(9,2);
lcd.print("In:");
lcd.setCursor(12,2);
lcd.print(celsiusin);
lcd.setCursor(14,2);
lcd.print("C");
if(pos+=45)
{
myservo.write(0);
delay(300);
}
else if(pos+=0)
{
delay(300);
}
else
{
delay(300);
}
}
else
{
if (celsiusin>celsiusout)
{
lcd.begin(16, 2);
lcd.setCursor(1, 0);
lcd.print("Window Opened!");
lcd.setCursor(1, 2);
lcd.print("Out:");
lcd.setCursor(5, 2);
lcd.print(celsiusout);
lcd.setCursor(7,2);
lcd.print("C");
lcd.setCursor(9,2);
lcd.print("In:");
lcd.setCursor(12,2);
lcd.print(celsiusin);
lcd.setCursor(14,2);
lcd.print("C");
if(pos+=0)
{
myservo.write(45);
delay(300);
}
else if(pos+=45)
{
delay(300);
}
else
{
delay(300);
}
}
else if (celsiusout>celsiusin)
{
lcd.begin(16,2);
lcd.setCursor(1, 0);
lcd.print("Window Closed!");
lcd.setCursor(1, 2);
lcd.print("Out:");
lcd.setCursor(5, 2);
lcd.print(celsiusout);
lcd.setCursor(7,2);
lcd.print("C");
lcd.setCursor(9,2);
lcd.print("In:");
lcd.setCursor(12,2);
lcd.print(celsiusin);
lcd.setCursor(14,2);
lcd.print("C");
if(pos+=45)
{
myservo.write(0);
delay(300);
}
else if(pos+=0)
{
delay(300);
}
else
{
delay(300);
}
}
else
{
lcd.begin(16,2);
lcd.setCursor(1, 0);
lcd.print("Window Closed!");
lcd.setCursor(1, 2);
lcd.print("Out:");
lcd.setCursor(5, 2);
lcd.print(celsiusout);
lcd.setCursor(7,2);
lcd.print("C");
lcd.setCursor(9,2);
lcd.print("In:");
lcd.setCursor(12,2);
lcd.print(celsiusin);
lcd.setCursor(14,2);
lcd.print("C");
if(pos+=0)
{
myservo.write(0);
delay(300);
}
else if(pos+=45)
{
delay(300);
}
else
{
delay(300);
}
}
delay(1000);
}
}