#include <IRremote.hpp>
const int IR_RECEIVE_PIN = 2;
const int LED_PIN = 9; // Must be PWM-capable (e.g., 3, 5, 6, 9, 10, 11 on Uno)
int brightness = 0; // 0–255 PWM value
void setup() {
Serial.begin(9600);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
pinMode(LED_PIN, OUTPUT);
analogWrite(LED_PIN, brightness);
Serial.println("IR Remote LED Brightness Control Ready");
}
void loop() {
if (IrReceiver.decode()) {
unsigned long keyCode = IrReceiver.decodedIRData.command;
Serial.print("Received key code: 0x");
Serial.println(keyCode, HEX);
switch (keyCode) {
case 0x68: // 0
brightness = 0;
Serial.println("Button: 0 → LED OFF");
break;
case 0x30: // 1
brightness = 28; // ~10%
Serial.println("Button: 1 → Brightness 10%");
break;
case 0x18: // 2
brightness = 56;
Serial.println("Button: 2 → Brightness 20%");
break;
case 0x7A: // 3
brightness = 85;
Serial.println("Button: 3 → Brightness 33%");
break;
case 0x10: // 4
brightness = 113;
Serial.println("Button: 4 → Brightness 44%");
break;
case 0x38: // 5
brightness = 141;
Serial.println("Button: 5 → Brightness 55%");
break;
case 0x5A: // 6
brightness = 170;
Serial.println("Button: 6 → Brightness 66%");
break;
case 0x42: // 7
brightness = 198;
Serial.println("Button: 7 → Brightness 77%");
break;
case 0x4A: // 8
brightness = 226;
Serial.println("Button: 8 → Brightness 88%");
break;
case 0x52: // 9
brightness = 255;
Serial.println("Button: 9 → Brightness 100%");
break;
case 0xA2: // POWER
brightness = 0;
Serial.println("Button: POWER → LED OFF");
break;
case 0x02: // PLUS
brightness = min(brightness + 25, 255);
Serial.println("Button: PLUS → Increase Brightness");
break;
case 0x98: // MINUS
brightness = max(brightness - 25, 0);
Serial.println("Button: MINUS → Decrease Brightness");
break;
default:
Serial.println("Button: Unmapped");
}
// Apply brightness
analogWrite(LED_PIN, brightness);
Serial.print("Current PWM Brightness: ");
Serial.println(brightness);
Serial.println("---------------");
IrReceiver.resume();
}
}