적외선 송신기 만들기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 기능만 만들어보았다. (자신의 리모컨 값에 맞게 바꾸어주자)
이제 시리얼 모니터에 정해진 명령을 입력해주면 된다.
반응형
'개발 공부 > 프로젝트' 카테고리의 다른 글
flask에서 request.args.get()의 의미 (0) | 2023.11.23 |
---|---|
프로젝트 : 적외선 송신기 만들기3 (0) | 2023.10.20 |
프로젝트 : 적외선 송신기 만들기1 (0) | 2023.10.20 |
프로젝트 라즈베리파이를 이용해 서버에서 액츄레이터 제어 (0) | 2023.10.20 |
프로젝트 ESP32를 이용해 센서값 서버로 보내기(map 함수를 이용한 % 변경) (0) | 2023.10.20 |