안녕하세요.
기계과감성쟁이입니다.
오늘은
적외선 수신모듈을 활용한 적외선 수신값 확인을 공부했어요.
회로도
아두이노 회로도 그리는 프로그램
좋은 거 어디 없나... 무료로......
전과 같이,
전원과 GND 확장을 위해 브레드 보드를 이용하였다.
5V 를 (+), GND를 (-)에 꽂고,
10번에 수신기, 11번에 송신기, 12번에 LED를 꽂았다.
달라지는 것은 사용하는 코드!
IRremote 라이브러리 다운 받기
이번 코드에서는 IRremote 라는 라이브러리를 사용합니다.
라이브러리 제작자들은 IRremote 라이브러리를
'Infrared remote library for Arduino: send and receive infrared signals with multiple protocols'
라고 말하네요.
'아두이노 적외선 통신을 위한 라이브러리 : 여러 프로토콜의 적외선 신호들을 송·수신 할 수 있는'
정도로 해석할 수 있습니다.
프로토콜은 기기들끼리 통신할 때 사용하는 통신규약인데, 쉽게 말해 서류 양식, 문법 등으로 이해하시면 됩니다.
이 단어는 리모콘을 만들 때 설명할게요.
아무튼, 해당 라이브러리를 사용하기 위해선
직접 다운받아주셔야 해요!
아두이노 IDE - 툴 - 라이브러리 관리 - 'IRremote' 를 검색하여 다운 받아주세요.
혹은,
해당 사이트에 들어가셔서 zip 파일을 다운받고
아두이노가 설치된 폴더 안 library 폴더 안에 압축을 풀어주시면 됩니다.
코드 작성과 결과값
#include <IRremote.h>
int ir_recieve = 10;
int ir_trans = 11;
IRrecv irrecv(ir_recieve); //IRrecv 객체생성
decode_results signals; //수신 데이터 저장 구조체
void setup()
{
Serial.begin(9600); //시리얼모니터 시작
irrecv.enableIRIn(); //수신시작
pinMode(ir_trans, OUTPUT);
}
void loop() {
digitalWrite(ir_trans, 1); // 송신기 on
delay(1000);
if (irrecv.decode(&signals)) {
Serial.println(signals.value, HEX); // 수신값을 16진법으로 출력
Serial.println(signals.bits, DEC); // 비트를 10진법으로 출력
irrecv.resume(); // 계속해!
}
}
라는 코드를 입력해주시면
처럼 적외선값이 16진법으로, 비트가 10진법으로 출력됩니다.
근데 값이 들쭉날쭉이네요. 저번 게시글처럼 송신부가 오락가락 하나봅니다.
그래서...
활용 및 예고
세월의 풍파를 정직하게 맞았음에도
아직 멀쩡히 작동하고 있는 저희집 리모콘을 들고 왔습니다.
수신부에 대고 버튼을 눌러 보았습니다.
버튼들끼리 나름의 통일성을 가지는게, 수신부가 정상이긴 한 것 같나보네요.
근데 저 FFFFFFFF 는 무엇이냐?
이건 프로토콜과 연관되어 있습니다. 마찬가지로 다음 시간에...
그러면 저 신호를 송신 모듈로 다시 TV에 쏴주면!?
TV가 작동되겠죠?
이걸 이용해 언젠가 리모콘을 만들겁니다. 일단은 시험기간이므로ㅠㅠ;;
시험기간이라 한동안 글이 좀 짧아질 것 같아요 엉엉
그래도 글을 쓰는게 어딘가요... 다 먹고 살자고 하는 건데 ㅎㅎ;