#include <IRremote.hpp>
const int receiverPin = 7; // Pin connected to IR receiver
const int ledWhitePin = 8; // Pin connected to LED 1 (White)
const int ledRedPin = 9; // Pin connected to LED 2 (Red)
const int ledYellowPin = 10; // Pin connected to LED 3 (Yellow)
const int ledOrange4Pin = 11;// Pin connected to LED 4 (Orange)
const int ledOrange5Pin = 12;// Pin connected to LED 5 (Orange)
bool ledWhiteState = false;
bool ledRedState = false;
bool ledYellowState = false;
bool ledOrange4State = false;
bool ledOrange5State = false;
bool syncBlinkState = false;
unsigned long previousMillis = 0;
const long interval = 500; // Interval for blinking (500 ms)
void setup() {
pinMode(ledWhitePin, OUTPUT);
pinMode(ledRedPin, OUTPUT);
pinMode(ledYellowPin, OUTPUT);
pinMode(ledOrange4Pin, OUTPUT);
pinMode(ledOrange5Pin, OUTPUT);
IrReceiver.begin(receiverPin, ENABLE_LED_FEEDBACK); // Initialize the IR receiver
Serial.begin(9600); // Initialize serial communication for debugging
}
void loop() {
if (IrReceiver.decode()) { // Check if a signal is received
unsigned long keyValue = IrReceiver.decodedIRData.command; // Get the command from the IR signal
Serial.println(keyValue, HEX); // Print the value received for debugging
switch (keyValue) {
case 0x30: // Code for button "1"
ledWhiteState = !ledWhiteState;
digitalWrite(ledWhitePin, ledWhiteState);
break;
case 0x18: // Code for button "2"
ledRedState = !ledRedState;
digitalWrite(ledRedPin, ledRedState);
break;
case 0x7A: // Code for button "3"
ledYellowState = !ledYellowState;
digitalWrite(ledYellowPin, ledYellowState);
break;
case 0x10: // Code for button "4"
ledOrange4State = !ledOrange4State; // Toggle blinking of LED 4
break;
case 0x38: // Code for button "5"
ledOrange5State = !ledOrange5State; // Toggle blinking of LED 5
break;
case 0x5A: // Code for button "6"
syncBlinkState = !syncBlinkState; // Toggle synchronized blinking of LEDs 4 and 5
break;
}
IrReceiver.resume(); // Prepare for the next value
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (syncBlinkState) {
digitalWrite(ledOrange4Pin, !digitalRead(ledOrange4Pin));
digitalWrite(ledOrange5Pin, !digitalRead(ledOrange5Pin));
} else {
if (ledOrange4State) {
digitalWrite(ledOrange4Pin, !digitalRead(ledOrange4Pin)); // Toggle LED 4
} else {
digitalWrite(ledOrange4Pin, LOW);
}
if (ledOrange5State) {
digitalWrite(ledOrange5Pin, !digitalRead(ledOrange5Pin)); // Toggle LED 5
} else {
digitalWrite(ledOrange5Pin, LOW);
}
}
}
}