#include <IRremote.h>
#define RECV_PIN 2
#define RED_LED 3
#define GREEN_LED 4
#define BLUE_LED 5
// Переменные для хранения кодов кнопок
uint32_t codeRed = 0;
uint32_t codeGreen = 0;
uint32_t codeBlue = 0;
uint32_t codeOff = 0;
void setup() {
Serial.begin(9600);
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, LOW);
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);
Serial.println("IR Remote Control Ready");
Serial.println("Press buttons to assign LEDs: first -> RED, second -> GREEN, third -> BLUE, zero -> OFF");
}
void loop() {
if (IrReceiver.decode()) {
uint32_t code = IrReceiver.decodedIRData.decodedRawData;
Serial.print("IR Code: 0x");
Serial.println(code, HEX);
// Назначение кнопок, если ещё не назначены
if (codeRed == 0 && code != codeOff) {
codeRed = code;
Serial.println("Assigned RED LED to this button");
}
else if (codeGreen == 0 && code != codeRed && code != codeOff) {
codeGreen = code;
Serial.println("Assigned GREEN LED to this button");
}
else if (codeBlue == 0 && code != codeRed && code != codeGreen && code != codeOff) {
codeBlue = code;
Serial.println("Assigned BLUE LED to this button");
}
else if (codeOff == 0 && code != codeRed && code != codeGreen && code != codeBlue) {
codeOff = code;
Serial.println("Assigned OFF function to this button");
}
// Включение/выключение LED
if (code == codeRed) {
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, LOW);
Serial.println("RED LED ON");
}
else if (code == codeGreen) {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, HIGH);
digitalWrite(BLUE_LED, LOW);
Serial.println("GREEN LED ON");
}
else if (code == codeBlue) {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, HIGH);
Serial.println("BLUE LED ON");
}
else if (code == codeOff) {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, LOW);
Serial.println("All LEDs OFF");
}
IrReceiver.resume(); // ждём следующий сигнал
}
}