#include <IRremote.h>
#define PIN_RECEIVER 23
IRrecv receiver(PIN_RECEIVER);
const int relay1Pin = 27;
const int relay2Pin = 26;
const int relay3Pin = 25;
const int relay4Pin = 33;
bool relaysOn = false;
void setup() {
Serial.begin(115200);
pinMode(relay1Pin, OUTPUT);
pinMode(relay2Pin, OUTPUT);
pinMode(relay3Pin, OUTPUT);
pinMode(relay4Pin, OUTPUT);
receiver.enableIRIn();
digitalWrite(relay1Pin, LOW);
digitalWrite(relay2Pin, LOW);
digitalWrite(relay3Pin, LOW);
digitalWrite(relay4Pin, LOW);
}
void loop() {
if (receiver.decode()) {
translateIR();
receiver.resume();
delay(100);
}
}
void translateIR() {
switch (receiver.decodedIRData.command) {
case 162:
Serial.println("POWER");
if (relaysOn) {
digitalWrite(relay1Pin, LOW);
digitalWrite(relay2Pin, LOW);
digitalWrite(relay3Pin, LOW);
digitalWrite(relay4Pin, LOW);
} else {
digitalWrite(relay1Pin, HIGH);
digitalWrite(relay2Pin, HIGH);
digitalWrite(relay3Pin, HIGH);
digitalWrite(relay4Pin, HIGH);
}
relaysOn = !relaysOn;
break;
case 48:
Serial.println("num: 1");
toggleRelay(relay1Pin);
break;
case 24:
Serial.println("num: 2");
toggleRelay(relay2Pin);
break;
case 122:
Serial.println("num: 3");
toggleRelay(relay3Pin);
break;
case 16:
Serial.println("num: 4");
toggleRelay(relay4Pin);
break;
default:
Serial.print("Unknown command: ");
Serial.println(receiver.decodedIRData.command);
}
}
void toggleRelay(int pin) {
int state = digitalRead(pin);
digitalWrite(pin, !state);
}