diy/아두이노

리모콘 ir신호 표시기 만들기

do121 2023. 9. 30. 10:41

tv와 선풍기를 제어하기 위한 리모컨 신호 발신기를 만드는 중인데

리모컨의 ir신호 조합을 알아야 하기에 
아두이노로 ir신호를 십진수와 16진수로 표시해 주는 표시기를 만들어 보았다.
예전에는 그냥 간이로 만들어서 시리얼 모니터로 신호를 분석했는데

발신기를 만들면 여러 리모컨을 사용하게 될수 있어서 그냥 케이스를 만들어서

필요할때 사용하기로 결정했다.

아누이노 우노는 부피가 크다보니 생가보다 사용할 일이 없어 남아도는 아두이노를

소진할 겸 우노로 만들기로함.

시리얼 모니터 없이 바로 확인가능하게 디스플레이를 추가함

oled가 아무래도 보기도 좋고 컴팩트해서 oled 0.96인치를 사용함

ir 수광부와 아두이노는 1k옴 저항을 연결하고 아두이노 7번핀에 연결

  

 

 

arduino case stl.zip
0.14MB

* 중간 부분은 인쇄 편의를 위해서 분리해서 인쇄후 접착제로 붙여서 사용함

#include <IRremote.h>

#include "U8glib.h"


int RECV_PIN = 7;


IRrecv irrecv(RECV_PIN);



decode_results results;


U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

void setup()
{

  Serial.begin(9600);
  irrecv.enableIRIn();

dis_oled2("init ... ","","","","");  
  delay(100);
}



void dis_oled2(String msg1, String msg2, String msg3, String msg4, String msg5) {

  int idx[] = {10, 23, 36, 49, 62};

  String str[5];

  str[0] = msg1;

  str[1] = msg2;

  str[2] = msg3;

  str[3] = msg4;

  str[4] = msg5;



  u8g.firstPage();



  do {

    u8g.setFont(u8g_font_unifont);



    for (int i = 0; i < 5; i++) {

      u8g.setPrintPos(0, idx[i]);



      u8g.print(str[i]);

    }

  } while (u8g.nextPage());



}
void loop() {
  if (irrecv.decode(&results)) {
    unsigned int value = results.value; //value =>dec, 10십진수임
    Serial.println(String(value, HEX));
    dis_oled2("HEX:" + String(value, HEX),"DEC:" + String(value),"","","");  

    Serial.println(value);
    irrecv.resume();
  }
  delay(100);

}