


이 Instructables는 깜박이는 LED와 깜박이지 않는 LED를 원격 제어하는 방법에 관한 것입니다. Arduino, 리모컨, LED를 사용합니다.
다음은 이 프로젝트의 영상입니다.
https://vimeo.com/manage/videos/1222372350


사용한 준비물은 다음과 같습니다.
Arduino 또는 호환 보드(Elegoo 등)
리모컨
IR 수신기
저항 6개; 330 ohms
LED; 빨간색, 노란색, 초록색, 빨간색, 흰색, 파란색(다른 색을 사용해도 되지만 그에 맞게 코드를 변경해야 함)
리드선 또는 점퍼 와이어
Arduino용 USB 케이블







다음은 프로젝트 영상입니다.
https://vimeo.com/manage/videos/1222372350
IR 통신에는 두 가지 부분이 있습니다. 리모컨과 IR 수신기입니다.
리모컨은 빛을 이용해 무선 신호를 보냅니다. 수신기는 이 신호를 받아 장치에 무엇을 해야 하는지 알려 줍니다. 이 경우 LED가 켜지거나 켜지지 않고, 깜박이거나 깜박이지 않게 됩니다.
리모컨은 TV, 모터 및 기타 장치와 함께 사용할 수 있습니다.
LED는 전원이 공급되면 켜집니다.
자세한 설명은 LED에 관한 제 다른 Instructables를 참고하세요.
다음은 리모컨으로 LED가 켜지고 깜박이는 모습을 보여 주는 영상입니다.
https://vimeo.com/manage/videos/1222372350


리모컨을 Arduino와 함께 사용하려면 헥스 코드를 찾아 코드에 추가해야 합니다.
IR 수신기를 Arduino에 설정합니다. IR 수신기의 센서를 Arduino 핀 11에 연결하고, 전원은 5 volts에, 접지는 GND에 연결합니다. 아래 코드를 Arduino IDE에 업로드합니다.
#include <IRremote.hpp>
const int RECV_PIN = 11; // Mega의 신호 핀
void setup() {
Serial.begin(115200); // Serial Monitor를 115200 baud로 설정하는 것을 잊지 마세요!
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);
Serial.println("Elegoo Mega IR Decoder Active...");
}
void loop() {
if (IrReceiver.decode()) {
// 명령 반복 코드는 무시하고 실제 버튼 누름만 캡처
if (!(IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT)) {
Serial.print("Hex: 0x");
Serial.print(IrReceiver.decodedIRData.command, HEX);
Serial.print(" -> Button Pressed: ");
// Elegoo Mega Remote의 정확한 키 디코딩
switch (IrReceiver.decodedIRData.command) {
case 0x45: Serial.println("POWER"); break;
case 0x46: Serial.println("VOL+"); break;
case 0x47: Serial.println("FUNC/STOP"); break;
case 0x44: Serial.println("PLAY/PAUSE"); break;
case 0x40: Serial.println("DOWN / FAST BACK"); break;
case 0x43: Serial.println("UP / FAST FORWARD"); break;
case 0x7: Serial.println("EQ"); break;
case 0x15: Serial.println("VOL-"); break;
case 0x9: Serial.println("ST/REPT"); break;
case 0x16: Serial.println("1"); break;
case 0x19: Serial.println("2"); break;
case 0xD: Serial.println("3"); break;
case 0xC: Serial.println("0"); break;
case 0x8: Serial.println("4"); break;
case 0x1C: Serial.println("5"); break;
case 0x5A: Serial.println("6"); break;
case 0x42: Serial.println("7"); break;
case 0x52: Serial.println("8"); break;
case 0x4A: Serial.println("9"); break;
default: Serial.println("UNKNOWN BUTTON"); break;
}
}
IrReceiver.resume();
}
}
Serial Monitor를 열고 각 버튼을 눌러 모든 버튼에 대해 Hex 번호와 버튼 번호를 기록하세요(마지막 사진 참조). Baud를 1152 baud로 변경해야 했습니다. 다음 코드에 baud를 입력해야 합니다.
아래 코드를 참조하세요. baud는 다음 줄에 있습니다. void setup serial begin()
그러면 다음 코드에서 사용할 이 baud 설정이 준비됩니다. 이 코드는 LED를 켜거나 깜박이게 합니다.
코드는 다음과 같습니다;
#include <IRremote.hpp>
// 하드웨어 핀 정의
const int RECV_PIN = 11;
// 깜박이는 LED
const int RED_LED = 2;
const int YELLOW_LED = 3;
const int GREEN_LED = 4;
// 켜진 상태로 유지되는(깜박이지 않는) LED
const int red_LED = 5;
const int white_LED = 6;
const int blue_LED = 7;
// LED 깜박임 상태
bool redBlinking = false;
bool yellowBlinking = false;
bool greenBlinking = false;
// 블로킹 없는 깜박임을 위한 타이머
unsigned long previousMillisRed = 0;
unsigned long previousMillisYellow = 0;
unsigned long previousMillisGreen = 0;
// 밀리초 단위의 깜박임 간격
const long intervalRed = 200; // 빠른 깜박임
const long intervalYellow = 500; // 중간 속도 깜박임
const long intervalGreen = 1000; // 느린 깜박임
void setup() {
Serial.begin(115200);
// LED 핀 구성
pinMode(RED_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(red_LED, OUTPUT);
pinMode(white_LED, OUTPUT);
pinMode(blue_LED, OUTPUT);
// IR 수신기 초기화
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);
Serial.println("System Ready.");
}
void loop() {
// 1. IR 명령 확인
if (IrReceiver.decode()) {
// 길게 누를 때 반복되는 코드 무시
if (!(IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT)) {
unsigned int command = IrReceiver.decodedIRData.command;
switch (command) {
// --- 깜박이는 LED 제어 ---
case 0xC: // 버튼 1
redBlinking = !redBlinking;
if (!redBlinking) digitalWrite(RED_LED, LOW);
Serial.println("Button 1: Toggled Red Blinking LED");
break;
case 0x18: // 버튼 2
yellowBlinking = !yellowBlinking;
if (!yellowBlinking) digitalWrite(YELLOW_LED, LOW);
Serial.println("Button 2: Toggled Yellow Blinking LED");
break;
case 0x5E: // 버튼 3
greenBlinking = !greenBlinking;
if (!greenBlinking) digitalWrite(GREEN_LED, LOW);
Serial.println("Button 3: Toggled Green Blinking LED");
break;
// --- 계속 켜져 있는 LED 제어 ---
case 0x5A: // 버튼 6 (계속 켜진 빨간색 LED 전환)
digitalWrite(red_LED, !digitalRead(red_LED));
Serial.println("Button 6: Toggled Solid Red LED");
break;
case 0x42: // 버튼 7 (계속 켜진 흰색 LED 전환)
digitalWrite(white_LED, !digitalRead(white_LED));
Serial.println("Button 7: Toggled Solid White LED");
break;
case 0x52: // 버튼 8 (계속 켜진 파란색 LED 전환)
digitalWrite(blue_LED, !digitalRead(blue_LED));
Serial.println("Button 8: Toggled Solid Blue LED");
break;
case 0x4A: // 버튼 9 (계속 켜진 모든 LED 켜기)
digitalWrite(red_LED, HIGH);
digitalWrite(white_LED, HIGH);
digitalWrite(blue_LED, HIGH);
Serial.println("Button 9: All Solid LEDs ON");
break;
// --- 마스터 전원 리셋 ---
case 0x45: // POWER 버튼
// 깜박임 비활성화
redBlinking = false;
yellowBlinking = false;
greenBlinking = false;
// 모든 LED 끄기
digitalWrite(RED_LED, LOW);
digitalWrite(YELLOW_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(red_LED, LOW);
digitalWrite(white_LED, LOW);
digitalWrite(blue_LED, LOW);
Serial.println("POWER: 모든 LED가 OFF로 리셋됨");
break;
}
}
IrReceiver.resume(); // 다음 신호를 받을 준비 완료
}
// 2. 논블로킹 LED 깜박임 처리
unsigned long currentMillis = millis();
// 빨간색 LED 깜박임 엔진
if (redBlinking && (currentMillis - previousMillisRed >= intervalRed)) {
previousMillisRed = currentMillis;
digitalWrite(RED_LED, !digitalRead(RED_LED));
}
// 노란색 LED 깜박임 엔진
if (yellowBlinking && (currentMillis - previousMillisYellow >= intervalYellow)) {
previousMillisYellow = currentMillis;
digitalWrite(YELLOW_LED, !digitalRead(YELLOW_LED));
}
// 녹색 LED 깜박임 엔진
if (greenBlinking && (currentMillis - previousMillisGreen >= intervalGreen)) {
previousMillisGreen = currentMillis;
digitalWrite(GREEN_LED, !digitalRead(GREEN_LED));
}
}
LED가 장착된 리모컨 영상입니다.
https://vimeo.com/manage/videos/1222372350
330Ω 저항을 LED에 연결하고, LED의 음극(짧은 다리)을 접지에 연결하세요.
Arduino에 사용되는 핀은 2, 3, 4, 5, 6, 7번입니다(330Ω 저항에 연결).





이 Instructables에서는 리모컨을 사용하여 LED를 켜거나 깜박이게 하는 방법을 보여줍니다. 이 Instructables를 즐겁게 보셨기를 바랍니다. 영상은 다음과 같습니다. 감사합니다.
https://vimeo.com/manage/videos/1222372350
원문: https://www.instructables.com/Remote-Controlling-Blinking-and-Non-blinking-LEDS/