중급⏱ 예상 시간: 45분📝 4단계
리모컨으로 LED 제어하기
IR 수신 모듈로 TV 리모컨 신호를 읽어 RGB LED의 색상을 리모컨 버튼으로 제어합니다.
🧩 필요한 모듈
Arduino Uno
브레드보드
IR 수신 모듈
점퍼 와이어
저항 (220Ω / 10kΩ)
RGB LED
📖 단계별 설명서
1단계준비물 확인
다음 부품들을 준비해주세요:
- Arduino Uno 1개
- 브레드보드 1개
- 점퍼 와이어 7개
- IR 수신 모듈 1개
- RGB LED 1개
- 220Ω 저항 3개
- TV 리모컨 (아무거나)
💡 팁: 먼저 리모컨의 신호 코드를 읽는 것이 가장 중요한 단계입니다.
2단계회로 연결하기
- IR 수신 모듈의 OUT을 D11에, VCC를 5V, GND를 GND에 연결합니다.
- RGB LED의 R(빨강)을 D3에, G(초록)을 D5에, B(파랑)을 D6에 각각 220Ω 저항과 함께 연결합니다.
- RGB LED의 공통핀(긴 다리)을 GND에 연결합니다. (공통 캐소드)
📐 회로도
회로도 이미지
/images/projects/ir-remote-led-circuit.png
💡 팁: RGB LED가 공통 애노드인 경우 코드에서 HIGH/LOW를 반대로 바꿔야 합니다.
3단계코드 작성하기
IRremote 라이브러리를 설치하고, 먼저 리모컨 신호를 스캔한 뒤 버튼별 색상을 매핑합니다.
code.ino
#include <IRremote.h>
const int IR_PIN = 11;
const int RED_PIN = 3;
const int GREEN_PIN = 5;
const int BLUE_PIN = 6;
bool ledOn = true;
int currentR = 0, currentG = 0, currentB = 0;
void setup() {
IrReceiver.begin(IR_PIN);
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
Serial.begin(9600);
Serial.println("IR RGB LED 제어 시작!");
Serial.println("리모컨 버튼을 눌러보세요.");
setColor(255, 255, 255); // 시작: 흰색
}
void setColor(int r, int g, int b) {
currentR = r; currentG = g; currentB = b;
if (ledOn) {
analogWrite(RED_PIN, r);
analogWrite(GREEN_PIN, g);
analogWrite(BLUE_PIN, b);
}
}
void loop() {
if (IrReceiver.decode()) {
uint32_t code = IrReceiver.decodedIRData.command;
Serial.print("수신 코드: 0x");
Serial.println(code, HEX);
switch (code) {
case 0x45: setColor(255, 0, 0); Serial.println("빨강"); break; // 1
case 0x46: setColor(0, 255, 0); Serial.println("초록"); break; // 2
case 0x47: setColor(0, 0, 255); Serial.println("파랑"); break; // 3
case 0x44: setColor(255, 255, 0); Serial.println("노랑"); break; // 4
case 0x40: setColor(255, 0, 255); Serial.println("보라"); break; // 5
case 0x43: setColor(0, 255, 255); Serial.println("시안"); break; // 6
case 0x15: setColor(255, 255, 255); Serial.println("흰색"); break; // 0
case 0x16: // 전원 버튼
ledOn = !ledOn;
if (!ledOn) {
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, 0);
Serial.println("LED OFF");
} else {
setColor(currentR, currentG, currentB);
Serial.println("LED ON");
}
break;
}
IrReceiver.resume();
}
}+42 줄 더 보기
💡 팁: switch문의 코드(0x45 등)를 시리얼 모니터에서 확인한 자신의 리모컨 코드로 바꾸세요!
4단계업로드 및 테스트
- Arduino IDE에서 'IRremote' 라이브러리를 설치합니다.
- 코드를 업로드합니다.
- 시리얼 모니터를 열고 리모컨 버튼을 눌러 코드를 확인합니다.
- 코드를 자신의 리모컨에 맞게 수정 후 다시 업로드합니다.
- 리모컨 숫자 버튼으로 색상을 변경해보세요!
💡 팁: 햇빛이나 형광등에서 나오는 적외선이 간섭을 일으킬 수 있으니 실내에서 테스트하세요.