#include <Servo.h>
int sensor_state = 0;
int distance = 0;
int led = 13; // the pin that the LED is atteched to
int pir = 8; // the pin that the sensor is atteched to
int state = LOW; // by default, no motion detected
int pir1 = 0; // variable to store the sensor status (value)
Servo servo_3;
const int ledPin=12;
const int sensorPin= A0;
int level;
const int threshold=800;
int temp = A1;
int greenLed = 11;
int redLed = 10 ;
int fan = 7;
int buzzer = 6;
int thresholdValue = 0;
int celsius = 0;
int fahrenheit = 0;
const float BETA = 3950;
void greenLightOff(){
digitalWrite(greenLed, LOW);
}
void greenLightOn(){
digitalWrite(greenLed, HIGH);
}
void redLightOff(){
digitalWrite(redLed, LOW);
}
void redLightOn(){
digitalWrite(redLed, HIGH);
}
void fanOn(){
digitalWrite(fan, HIGH);
}
void fanOff(){
digitalWrite(fan, LOW);
}
void buzzerOn(){
digitalWrite(buzzer, HIGH);
}
void buzzerOff(){
digitalWrite(buzzer, LOW);
}
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // Clear the trigger
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
return pulseIn(echoPin, HIGH);
}
void setup()
{
pinMode(led, OUTPUT); // initalize LED as an output
pinMode(pir, INPUT); // initialize sensor as an input
Serial.begin(9600); // initialize serial
servo_3.attach(3, 500, 2500);
pinMode(7, OUTPUT);
pir1 = digitalRead(pir); // read sensor value
pinMode (ledPin, OUTPUT);
pinMode (sensorPin, INPUT);
// Serial.begin(9600);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(fan, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(temp, INPUT);
// Serial.begin(9600);
}
void loop()
{
distance = 0.01723 * readUltrasonicDistance(5, 4);
sensor_state = digitalRead(2);
servo_3.write(0);
// if sensor_data is high, rotate servo motor, else
// close it.
if (sensor_state == HIGH) {
servo_3.write(45);
servo_3.write(0);
delay(1000); // Wait for 1000 millisecond(s)
servo_3.write(0);
tone(7, 123, 1000); // play tone 35 (B2 = 123 Hz)
}
if (distance <= 10)
{
Serial.println("Gate Open");
servo_3.write(80);
delay(5000); // Wait for 4000 millisecond(s)
Serial.println("Gate Close");
servo_3.write(0);
tone(7, 123, 1000); // play tone 35 (B2 = 123 Hz)
}
else
{
servo_3.write(0);
}
pir1 = digitalRead(pir); // read sensor value
if (pir1 == HIGH) // check if the sensor is HIGH
{
digitalWrite(led, HIGH); // turn LED ON
delay(500); // delay 100 milliseconds
if (state == LOW)
{
Serial.println("Motion detected!");
state = HIGH; // update variable state to HIGH
}
}
else {
digitalWrite(led, LOW); // turn LED OFF
delay(500); // delay 200 milliseconds
if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW; // update variable state to LOW
}
}
level= analogRead(sensorPin);
if (level > threshold)
{
digitalWrite(ledPin, HIGH);
Serial.println("Its Dark, LED ON");
delay(1000);
Serial.flush();
// digitalWrite(ledPin, LOW);
}
else
{
digitalWrite(ledPin, LOW);
Serial.println("Its Light, LED OFF");
delay(1000);
Serial.flush();
}
int analogValue = analogRead(A1);
celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
fahrenheit = ((celsius * 9) / 5 + 32);
Serial.print(celsius);
Serial.print(" C : ");
Serial.print(fahrenheit);
Serial.println(" F");
if( celsius<= 25){
greenLightOn();
redLightOff();
fanOff();
buzzerOff();
Serial.println("green light on");
}
else if(celsius >= 25 && celsius <= 25){
greenLightOff();
fanOff();
buzzerOff();
redLightOn();
Serial.println("red light on");
}
else if(celsius > 25){
redLightOn();
fanOn();
buzzerOn();
greenLightOff();
Serial.println("Red Light On | Fan on");
}
else{
Serial.println("Temperature is Normal");
}
delay(500);
}