아두이노

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를 만들어보세요!

반응형