본문 바로가기
개발 공부/프로젝트

프로젝트 : 적외선 송신기 만들기2

by momo'sdad 2023. 10. 20.

적외선 송신기 만들기2

IRremote 예제 중 IRsendDemo를 보자.

IR LED가 3번 핀에 연결되어야 한다고 적혀있다.

3번 핀, GND에 연결해주자.

IRsendDemo의 소스코드를 보자.

코드가 irsend.sendSony(0xa90,12); 밖에 없으니 이 코드가 ir 값을 보내는 명령이라는 것은 직관적으로 알 수 있을 것이다.

irsend는 적외선 신호를 보내는 함수이고 sendSony는 Sony 포맷으로 인코딩된 신호를 보낸다는 뜻이다. 또한 0xa90은 적외선 신호 값이고 12는 비트 수를 뜻한다.

즉 이 부분을 수정해주면 되는데 NEC 포맷의 32비트 0x20DF10EF 값을 보내려면

irsend.sendNEC(0x20DF10EF, 32);

라는 코드를 사용하면 된다.

이제 코드를 만들어보자. 시리얼 모니터에서 명령을 입력받아서 그에 맞는 IR 신호를 보내려고 한다.

#include <IRremote.h>
IRsend irsend;

void setup() {
  Serial.begin(9600);
}

String readSerial() {  
    String str = "";  
    char ch;  
    
    while( Serial.available() > 0 ) {  
      ch = Serial.read();  
      str.concat(ch);  
      delay(10);  
    }  
    
    return str;
}  

void loop() {
  String str;  
  str = readSerial();  
  if ( str == "" )  
    ;  

  else if (str=="turn on/off") {      
    Serial.println(str);  
    irsend.sendNEC(0x20DF10EF, 32);
    delay(100);
    irsend.sendNEC(0x122430CF, 32);
  }
  else if (str=="volume up"){
    Serial.println(str);  
    irsend.sendNEC(0x1224C837, 32);
  }
  else if (str=="volume down"){
    Serial.println(str);  
    irsend.sendNEC(0x122428D7, 32);
  }
  else{
    Serial.println("turn on/off, volume up, volume down 중 입력해주세요.");
  }
}

간단하게 전원 on/off, volume up/down 기능만 만들어보았다. (자신의 리모컨 값에 맞게 바꾸어주자)

이제 시리얼 모니터에 정해진 명령을 입력해주면 된다.

반응형