아두이노
IR 리모컨으로 OLED 화면 제어하기 – 아두이노로 만든 무선 UI 시스템
게임교수
2025. 4. 21. 07:55
반응형
IR 리모컨으로 OLED 화면 제어하기 – 아두이노로 만든 무선 UI 시스템
IR 리모컨을 이용하면 아두이노에서 버튼 하나 없이도 다양한 동작을 제어할 수 있습니다. 특히 OLED 디스플레이와 결합하면 무선으로 메뉴를 전환하거나 값을 조절하는 작은 인터페이스 시스템을 구축할 수 있죠.
이번 글에서는 IR 수신 모듈과 SSD1306 OLED 디스플레이를 이용해, 리모컨 입력에 따라 텍스트, 아이콘, 메뉴 등을 전환하는 시스템을 구축해보겠습니다.
1. 준비물
- 아두이노 Uno 또는 Nano
- 0.96인치 OLED (SSD1306, I2C 방식)
- IR 수신기 모듈 (TSOP1838 등)
- 적외선 리모컨
- 점퍼 케이블
2. 회로 연결
OLED (I2C)
- VCC → 5V
- GND → GND
- SDA → A4
- SCL → A5
IR 수신기
- OUT → D2
- VCC → 5V
- GND → GND
3. 라이브러리 설치
두 가지 라이브러리가 필요합니다.
- IRremote by shirriff (버전 3.x 이상)
- U8g2 by olikraus
Arduino IDE → 스케치 → 라이브러리 포함 → 라이브러리 관리에서 설치하세요.
4. 전체 예제 코드
#include <IRremote.h>
#include <Wire.h>
#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
const int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
int menuIndex = 0;
void setup() {
u8g2.begin();
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
long key = results.value;
if (key == 0xFFA25D) { // CH- 버튼
menuIndex = (menuIndex - 1 + 3) % 3;
} else if (key == 0xFF629D) { // CH+ 버튼
menuIndex = (menuIndex + 1) % 3;
}
irrecv.resume();
}
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB08_tr);
if (menuIndex == 0) {
u8g2.drawStr(10, 30, "메뉴 1: 센서값");
} else if (menuIndex == 1) {
u8g2.drawStr(10, 30, "메뉴 2: 시스템정보");
} else {
u8g2.drawStr(10, 30, "메뉴 3: 설정");
}
u8g2.sendBuffer();
delay(100);
}
📌 위 예제는 CH+ / CH- 버튼을 눌러 메뉴를 순차적으로 전환하는 구조입니다. 리모컨의 키코드는 모델마다 다르므로 직접 Serial.print(results.value, HEX);로 확인하세요.
5. 사용자 정의 메뉴 확장 팁
- 리모컨 숫자 버튼 → 특정 페이지 바로가기
- OK 버튼 → 동작 실행 (LED On/Off, 서보 제어 등)
- 좌우 버튼 → 값 조절 (밝기, 속도 등)
OLED는 단순 출력이 아닌 UI 시스템 구축용 패널로 활용할 수 있습니다. 리모컨과 결합하면 버튼 하나 없이도 다양한 인터랙션이 가능하죠.
6. 마무리
IR 리모컨을 활용하면 별도의 버튼, 터치스크린 없이도 OLED 기반 인터페이스를 만들 수 있습니다.
다음 글에서는 ‘DHT11 온습도 센서’나 ‘버튼으로 메뉴 전환’ 기능과 연계해 진짜 완성도 높은 미니 UI 시스템을 만들어볼 수 있어요.
직접 다양한 키코드를 매핑해보며 나만의 리모컨 UI를 만들어보세요!
반응형