본문 바로가기
2022-2/마이크로프로세서

8. Infrared Remote Control

by 철없는민물장어 2022. 11. 14.
728x90
반응형
  • Read remote control code
  • LED remote control

 


Infrared Remote Controller

적외선 램프가 깜빡이는 것으로 신호를 주고받는다.

줄여서 IR이라고 부른다.

전송부 주파수와 수신부 주파수가 매치돼야 사용가능하다.

 

리모컨으로 버튼을 누르면 정해진 값(파형)이 전송되고, 리시버에서 신호를 받아 디지털신호로 변환한다.

 

IRremote 라는 라이브러리를 사용하면 간단하게 코드를 짤 수 있다.

 

IRrecv 리시브_변수명(pin number) //리모컨 리시브핀 설정
리시브_변수명.enable() //리모컨 리시빙 활성화
decode_result 결과_변수명 //decode_result자료형의 결과를 저장할 변수 생성

리시브_변수명.decode(&결과_변수명) //리모컨 리시브로 받은 값을 (결과_변수명)에 저장

결과_변수명.decode_type//코드타입(NEC,SONY,...)
결과_변수명.value//받은 값
결과_변수명.bits//전달받은 비트 수

리시브_변수명.resume() //값을 입력받을 준비
리시브_변수명.blink13(true)//13번핀(아두이노 내장) 깜빡이기

Read infrared remote control code

리모컨 연결.

연결되었다면 13번핀 블링크.

리모컨으로 전달받은 값 시리얼통신으로 출력

각각의 버튼이 전달하는 값을 화면으로 확인해보기

 

IR receiver의 Out - 아두이노 11번핀

IR receiver의 G - 아두이노 GND핀

IR receiver의 Vcc - 아두이노 5V 핀

에 각각 연결한다.

 

#include <IRremote.h>

int irPin=11; //리시버의 out단자 연결 핀번호

IRrecv irrecv(irPin); //적외선 수신부가 연결된 핀을 리모컨 수신 핀으로 설정

decode_results results; //결과를 담을 results변수 생성

void setup()
{
	Serial.begin(9600);
    irrecv.enableIRIn(); //적외선 리모컨 수신 시작
    irrecv.blink13(true);//13번핀 깜빡.
}
void loop()
{
	if(irrecv.decode(&results))//수신된 코드가 있는 경우
    {
    	if(results.value!=0xFFFFFFFF)//0xFFFFFFFF는 반복적인 키 입력인 경우임.꾸욱 누른거
        {
        	Serial.print("Received Code is:");
            Serial.print(results.value, HEX); //수신된 값을 16진수로 출력
        }
        
        irrecv.resume();//다음 수신을 받을 수 있게 함
    }
}

LED remote control

여러개의 LED를 연결 해두고, 리모컨으로 LED를 조작할 수 있게 한다.

스위치를 사용할 때보다 적은 핀으로 다양한 패턴을 표현할 수 있다.

(수신부 핀 1개만 사용해서 리모컨의 버튼마다 각각 동작을 지정할 수 있음)

 

#include <IRremote.h>

int irPin=11; //리시버의 out단자 연결 핀번호

IRrecv irrecv(irPin); //적외선 수신부가 연결된 핀을 리모컨 수신 핀으로 설정

decode_results results; //결과를 담을 results변수 생성

int led1=2;
int led2=3;
int led1=4;
int led2=5;

long on1 = 0x9716BE3F
long off1 = 뭐시기
long on2 = 뭐라뭐라
long off2 = 뭐시기
long on3 = 뭐라뭐라
long off3 = 뭐시기
long on4 = 뭐라뭐라
long off4 = 뭐시기 //이 값들은 버튼을 눌렀을 때 수신되는 16진수 값들임. 리모컨마다 다르므로 설정부탁~

void setup()
{
	Serial.begin(9600);
    irrecv.enableIRIn(); //적외선 리모컨 수신 시작
    irrecv.blink13(true);//13번핀 깜빡.
    
    //led사용을 위해 셋업
    pinMode(led1,OUTPUT);
    pinMode(led2,OUTPUT);
    pinMode(led3,OUTPUT);
    pinMode(led4,OUTPUT);
}
void loop()
{
	if(irrecv.decode(&results))//수신된 코드가 있는 경우
    {
    	if(results.value!=0xFFFFFFFF)//0xFFFFFFFF는 반복적인 키 입력인 경우임.꾸욱 누른거
        {
        	if(results.value == on1)
            {
            	digitalWrite(led1,HIGH);
            }
        	if(results.value == off1)
            {
            	digitalWrite(led1,LOW);
            }
        	if(results.value == on2)
            {
            	digitalWrite(led1,HIGH);
            }
            .
            .
            .
            대략 이런느낌
            .
            .
            알아서 쓰도록 하자.
            .
            .
            
        }
        
        irrecv.resume();//다음 수신을 받을 수 있게 함
    }
}

 

728x90
반응형

'2022-2 > 마이크로프로세서' 카테고리의 다른 글

10. Microprocessor  (0) 2022.11.21
9. Various Modules  (0) 2022.11.18
7. Motor Drive  (0) 2022.11.07
6. Analog Input  (1) 2022.11.01
5. Digital Signal Input  (0) 2022.10.23

댓글