const int trigPin = 12;
const int echoPin = 13;
int flame_sensor_pin = 10 ;// initializing pin 12 as the sensor output pin
int flame_pin = HIGH ; // state of sensor
#define RELAY_PIN 8
#define SPRINKLER_START_DELAY 5000 //5 seconds
#define SPRINKLER_ON_TIME 3000 //3 seconds Sprinkler on time
const int buzz1 = 2;
const int buzz2 = 3;
const int buzz3 = 4;
const int LED1 = A0;
const int LED2 = A1;
const int LED3 = A2;
int duration = 0;
int distance = 0;
unsigned long previousTime = millis();
void setup()
{
pinMode(trigPin , OUTPUT);
pinMode(echoPin , INPUT);
pinMode ( LED3 , OUTPUT ); // declaring led pin as output pin
pinMode ( flame_sensor_pin , INPUT ); // declaring sensor pin as input pin for Arduino
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED1 , OUTPUT);
pinMode(LED2 , OUTPUT);
pinMode(buzz1, OUTPUT);
pinMode(buzz2, OUTPUT);
pinMode(buzz3, OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration/58.2;
flame_pin = digitalRead ( flame_sensor_pin ) ; // reading from the sensor
if (flame_pin == LOW ) // applying condition
{
Serial.println ( " FLAME , FLAME , FLAME " ) ;
digitalWrite ( LED3 , HIGH ) ;// if state is high, then turn high the led
digitalWrite(buzz3, HIGH);
if (millis() - previousTime > SPRINKLER_START_DELAY) //We will wait for few seconds before sprinkler can be started once fire is detected.
{
digitalWrite(RELAY_PIN, LOW); //Relay is low level triggered relay so we need to write LOW to switch on the light
delay(SPRINKLER_ON_TIME); //Keep sprinkler on for sometime.
}
}
else
{
Serial.println ( " no flame " ) ;
digitalWrite ( LED3 , LOW ) ; // otherwise turn it low
digitalWrite(buzz3, LOW);
digitalWrite(RELAY_PIN, HIGH);
previousTime = millis();
delay(50);
}
if ( distance < 20 )
{
digitalWrite(LED1, HIGH);
delay(1000);
digitalWrite(LED1,LOW);
digitalWrite(buzz1, HIGH);
}
else
{
digitalWrite(LED1, LOW);
digitalWrite(buzz1, LOW);
}
if ( distance <= 50 )
{
digitalWrite(LED2, HIGH);
digitalWrite(buzz2, HIGH);
}
else
{
digitalWrite(LED2, LOW);
digitalWrite(buzz2, LOW);
delay(100);
}
}