#include <IRremote.h>
#include <EEPROM.h>
const int RECV_PIN=A0;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define Relay1 8 // Load1 Pin Out
#define Relay2 9 // Load2 Pin Out
#define Relay3 10 // Load3 Pin Out
#define Relay4 11 // Load4 Pin Out
int load1, load2, load3, load4, power;
void setup(){// put your setup code here, to run once
Serial.begin(115200);
pinMode(Relay1, OUTPUT); // declare as output for Load1 Pin Relay1
pinMode(Relay2, OUTPUT); // declare as output for Load2 Pin Relay2
pinMode(Relay3, OUTPUT); // declare as output for Load3 Pin Relay3
pinMode(Relay4, OUTPUT); // declare as output for Load4 Pin Relay4
digitalWrite(Relay1, 0); // Turn Off Load1
digitalWrite(Relay2, 0); // Turn Off Load2
digitalWrite(Relay3, 0); // Turn Off Load3
digitalWrite(Relay4, 0); // Turn Off Load4
irrecv.enableIRIn(); // Start the receiver
irrecv.blink13(true);
load1 = EEPROM.read(1);
load2 = EEPROM.read(2);
load3 = EEPROM.read(3);
load4 = EEPROM.read(4);
power = EEPROM.read(5);
}
void loop() {
if(irrecv.decode(&results)){
Serial.println(results.value,HEX);
if(results.value==0x6BC6597B){ // For Load1 On
load1 = 0;
EEPROM.write(1, load1);
}
else if(results.value==0x735B797E){ // For Load1 Off
load1 = 1;
EEPROM.write(1, load1);
}
else if(results.value==0x450753D6){ // For Load2 On
load2 = 0;
EEPROM.write(2, load2);
}
else if(results.value==0xBA0F4EDF){ // For Load2 Off
load2 = 1;
EEPROM.write(2, load2);
}
else if(results.value==0xF6317EDB){ // For Load3 On
load3 = 0;
EEPROM.write(3, load3);
}
else if(results.value==0xF9000E7E){ // For Load3 Off
load3 = 1;
EEPROM.write(3, load3);
}
else if(results.value==0xC7291B77){ // For Load4 On
load4 = 0;
EEPROM.write(4, load4);
}
else if(results.value==0x4AC4DA9A){ // For Load4 Off
load4 = 1;
EEPROM.write(4, load4);
}
else if(results.value==0x22D912BB){ // For Power On
power = 0;
EEPROM.write(5, power);
}
else if(results.value==0x776C6E7A){ // For Power Off
power = 1;
EEPROM.write(5, power);
}
irrecv.resume(); // Receive the next value
delay(100);
}
if(power==1){
digitalWrite(Relay1, 1); // Turn Off Load1
digitalWrite(Relay2, 1); // Turn Off Load2
digitalWrite(Relay3, 1); // Turn Off Load3
digitalWrite(Relay4, 1); // Turn Off Load4
}else{
digitalWrite(Relay1, load1);
digitalWrite(Relay2, load2);
digitalWrite(Relay3, load3);
digitalWrite(Relay4, load4);
}
delay(500);
}