#include <IRremote.h>

const int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;

int cautionLED = 3;   //Yellow LED
int abortLED = 4;     //Red LED
int BuzzerPin = 5;    //Sound
int RelayPin = 6;     //Sprinkler Valve
int LEDPin = 7;       //Green LED

int abortFlag = 0;
int fireFlag = 0;

void setup() {

  irrecv.enableIRIn();
  irrecv.blink13(true);

  pinMode(RelayPin, OUTPUT);     
  pinMode(LEDPin, OUTPUT);
  pinMode(BuzzerPin, OUTPUT);
  pinMode(abortLED, OUTPUT);
  pinMode(cautionLED, OUTPUT);

  digitalWrite(cautionLED, HIGH);   //Initially when turn console on
}

void loop() {

  if (irrecv.decode(&results)){

      if (results.value == 0xE0E010EF){         // Button "4" pressed = Reset
        abortFlag = 0;
        fireFlag = 0;
        digitalWrite(abortLED, LOW); 
        digitalWrite(cautionLED, HIGH);
        digitalWrite(LEDPin, LOW);
      }

      if (results.value == 0xE0E0609F){         // Button "3" pressed = Abort
        if (abortFlag == 1) {
        }
        else {
         abortFlag = 1;  
         digitalWrite(abortLED, HIGH); 
         digitalWrite(cautionLED, LOW);
         digitalWrite(LEDPin, LOW);
         fireFlag = 0;
        }
      }
   
       
      if (results.value == 0xE0E020DF){         // Button "1" pressed = Launch
       if (fireFlag == 1) {
         digitalWrite(RelayPin, HIGH);
         delay(1000);
         digitalWrite(RelayPin, LOW);  
         digitalWrite(LEDPin, LOW);  
         fireFlag = 0;
         abortFlag = 1;
       }      
 
      }

      if (results.value == 0xE0E0A05F){         // Button "2" pressed = Countdown

         digitalWrite(cautionLED, LOW);
                  
         if (abortFlag == 0) {
            fireFlag = 1;
          for (byte Countdown = 0; Countdown < 10; ++Countdown) {
            digitalWrite(BuzzerPin, HIGH);
            digitalWrite(LEDPin, HIGH);
            delay(500);
            digitalWrite(BuzzerPin, LOW); 
            digitalWrite(LEDPin, LOW);
            delay(500); 
           }
            digitalWrite(LEDPin, HIGH);
          } 
          else {
            fireFlag = 0; 
          }   


      }


        irrecv.resume(); 
        
    }    //==================================================================if statement
  
}   //=======================================================================Loop
