#include <IRremote.h>
// Define pin connections
#define PIN_RECEIVER 6 // Signal Pin of IR receiver
const int redLED = 2; // Pin for red LED
const int yellowLED = 3; // Pin for yellow LED
const int greenLED = 4; // Pin for green LED
IRrecv receiver(PIN_RECEIVER);
bool redState = false;
bool yellowState = false;
bool greenState = false;
bool allLEDsState = false; // State of all LEDs (off by default)
void setup()
{
Serial.begin(9600);
receiver.enableIRIn(); // Start the receiver
// Set LED pins as outputs
pinMode(redLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(greenLED, OUTPUT);
// Turn off all LEDs at the start
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, LOW);
}
void loop()
{
// Check if an IR signal has been received
if (receiver.decode()) {
translateIR(); // Call function to process the command
receiver.resume(); // Prepare for the next value
}
}
// Function to toggle LEDs based on the command received
void translateIR()
{
switch (receiver.decodedIRData.command) {
case 48: // Button for red LED (adjust to match your remote code)
redState = !redState;
digitalWrite(redLED, redState ? HIGH : LOW);
Serial.println(redState ? "Red LED ON" : "Red LED OFF");
break;
case 24: // Button for yellow LED (adjust to match your remote code)
yellowState = !yellowState;
digitalWrite(yellowLED, yellowState ? HIGH : LOW);
Serial.println(yellowState ? "Yellow LED ON" : "Yellow LED OFF");
break;
case 122: // Button for green LED (adjust to match your remote code)
greenState = !greenState;
digitalWrite(greenLED, greenState ? HIGH : LOW);
Serial.println(greenState ? "Green LED ON" : "Green LED OFF");
break;
case 162: // Power button (adjust to match your remote code)
allLEDsState = !allLEDsState; // Toggle all LEDs state
digitalWrite(redLED, allLEDsState ? HIGH : LOW);
digitalWrite(yellowLED, allLEDsState ? HIGH : LOW);
digitalWrite(greenLED, allLEDsState ? HIGH : LOW);
Serial.println(allLEDsState ? "All LEDs ON" : "All LEDs OFF");
break;
default:
Serial.print("Unknown button: ");
Serial.println(receiver.decodedIRData.command);
break;
}
}