정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노 IR 리모콘 관련
김승종 | 2016-01-22

안녕하세요...

이제 아두이노 오랜지보드 블루를 사서 처음 접해 보는 사람입니다.

5버튼짜리 IR 리모콘을 이용하여 아래와 같은 기능을 구현 하려 하는데 잘 되지 않아 도움을 요청드립니다.

(리시버 프로그램을 통하여 ir리모콘의 데이터는 알아놨어요)

1.  리모콘 1번키 (case 0x002FD58A7: // Key 0 ) 누르는 동안 아두이노 2번핀 hi

2. 리모콘 2번키 ( case 0x002FD9867: // Key 1 ) 누르는 동안 아두이노 3번핀 hi

3. 리모콘 3번키 ( case 0x002FD18E7: // Key 2 ) 누루는 동안 아두이노 4번핀 hi

4. 리모콘 4번키 ( case 0x002FD807F: // Key 3 ) 누르는 동안 아두이노 5번핀 hi

5. 리모콘 5번키 (  case 0x002FD00FF: // Key 4 ) 한번 누르면 아두이노 6번 hi

6. 리모콘 5번키 ( case 0x002FD00FF: // Key 4 ) 한번 누르면 아두이노 6번 low

7. 리모콘 5번키 ( case 0x002FD00FF: // Key 4  ) 가 hi가 되고 10초동안 5번키가 안들어오면 자동으로 off

* ir sensor는 7번핀에 입력 해놓은 상태입니다.

펌웨어 를처음 접해보는 터라... 인터넷에서 찾아서 이것 저것 해보다, 빠른 시간내에 만들어내야 해서 이렇게 도움 요청드립니다.

==================================================================================================

#include <IRremote.h>

 

int RECV_PIN = 7; // RECV_PIN핀을 7번으로 설정
//=====================================================
int led1 = 2; //led1을 2번핀으로 설정
int led2 = 3; //led2을 3번핀으로 설정
int led3 = 4; //led3을 4번핀으로 설정
int led4 = 5; //led4을 5번핀으로 설정
int led5 = 6; //led5을 6번핀으로 설정
 //==========================================================

IRrecv irrecv(RECV_PIN);

 

decode_results results;

 

void setup()

{

    Serial.begin(9600);

    irrecv.enableIRIn();

}
//=======================================================================
{
  pinMode(led1,OUTPUT); //LED1핀을 OUTPUT으로 설정
   pinMode(led2,OUTPUT); //LED2핀을 OUTPUT으로 설정
    pinMode(led3,OUTPUT); //LED3핀을 OUTPUT으로 설정
     pinMode(led4,OUTPUT); //LED4핀을 OUTPUT으로 설정
      pinMode(led5,OUTPUT); //LED5핀을 OUTPUT으로 설정

pinMode(RECV_PIN,INPUT); // RECV_PIN(7번핀)을 input으로 설정

     
}
//=========================================================================
void loop()
{
    if(digitalRead(RECV_PIN) == 0x002FD58A7)
       digitalWrite(led1,HIGH) ; //RECV_PIN 이 0x002FD58A7 일경우 led1은 higt
      
    if(digitalRead(RECV_PIN) == 0x002FD9867)
       digitalWrite(led1,HIGH) ; //RECV_PIN 이 0x002FD58A7 일경우 led2은 higt
      
    if(digitalRead(RECV_PIN) == 0x002FD18E7)
       digitalWrite(led1,HIGH) ; //RECV_PIN 이 0x002FD58A7 일경우 led3은 higt
      
    if(digitalRead(RECV_PIN) ==  0x002FD807F)
       digitalWrite(led1,HIGH) ; //RECV_PIN 이 0x002FD58A7 일경우 led4은 higt

       if(digitalRead(RECV_PIN) == 0x002FD00FF)
       digitalWrite(led1,HIGH) ; //RECV_PIN 이 0x002FD58A7 일경우 led5은 higt
}
  else  {
    digitalWrite(led1,low) //이외의 경우 led1을 꺼라.
    digitalWrite(led2,low) //이외의 경우 led2을 꺼라.
    digitalWrite(led3,low) //이외의 경우 led3을 꺼라.
    digitalWrite(led4,low) //이외의 경우 led4을 꺼라.
    digitalWrite(led5,low) //이외의 경우 led5을 꺼라.
  }
//===========================================================================
void loop()

{

    if(irrecv.decode(&results)){

        if(results.decode_type == NEC){

          switch(results.value){

            case 0x002FD58A7: // Key 0

                Serial.println("Press '0'");

                break;

            case 0x002FD9867: // Key 1

                Serial.println("Press '1'");

                break;

            case 0x002FD18E7: // Key 2

                Serial.println("Press '2'");

                break;

            case 0x002FD807F: // Key 3

                Serial.println("Press '3'");

                break;

            case 0x002FD00FF: // Key 4

                Serial.println("Press '4'");

                break;

                  default:

                break;

          }           
        }
        irrecv.resume();
    }
}

===============================================================================

할수있는데 까지는 작성해 봤는데요;;;;

돌아가지 않아요;;;

이전글   |    오렌지보드 BLE 신호 세기 2016-01-20
다음글   |    아두이노 초음파 센서를 이용하여 2016-01-22