우리가 덧셈, 뺄셈에서 곱셈, 나눗셈을 배울 때는

당연히 어렵게 느껴지지만 어느 순간 익숙함에

쉬워지죠. 그때 필요하면 도움을 요청 하는 건 당연합니다.

 

- 내용 정리

적외선 리모콘에서 2개의 신호가 먼지 정의하고

리모콘에서 신호를 보내게 될 때, RC서보모터를

0도 또는 90도로 돌아가도록 하는 것입니다.

 

 

회로의 연결

신호의 연결은 다음과 같이 됩니다.

 

리모콘은 다음과 같이 11번과 연결합니다.

 

 

 

그리고 서보모터는 2번을 통해 연결합니다.

 

 

 

 

 

최종 연결 시 다음과 같이 연결 합니다.

VCC 0V가 입력되도록 전원을 입력시키고

11번 단자 => 적외선 수신부

2번 단자 => 서보모터와 연결 할 수 있도록 합니다.

 

 

 

 

 

 

 

상단의 정의해야 되는 부분은 다음과 같이 프로그램 합니다.

 

적외선 리모콘을 사용하기 위해 어제 기본 적인 값을 사용한 것 그대로

사용했다고 생각하변 됩니다.

적외선 리모콘을 사용하기 위해 11번 단자를

 

void setup에서는

시리얼 모니터를 정의 하고

13번의 LED 동작을 표시하기 위해

2번은 서보모터를 동작시키기 위해 정의 했습니다.

irrecv.enableIRIn()은 적외선 리모콘을 사용하기 위해 정의한

내용입니다.

 

 

 

 

 

remo results.value의 바뀌어지는 적외선 값을 입력 받을 수 있도록

변수이름으로 활용하고

 

remo  if()안에 remo == 0xFFA25D와 비교 될 수 있도록 사용했습니다.

여기서 ==는 프로그램에서 =의 같다와 표현으로 사용됩니다.

 

 

 

if(remo == 0xFFA25D) { 프로그램동작 1}

else if(remo == 0xFFE21D) { 프로그램동작 2}

다음과 같은 형태로 만들어져서 리모콘의 받아오는 값

다음과 같은 형태에서의 값과 비교될 수 있도록 사용해서

 

 

 

 

값이 입력 되면 if문 또는 else if문의 프로그램이 동작되도록

만들어졌습니다.

 

if문 또는 else if문의 프로그램은 LED 또는 서보모터를 동작시키는

프로그램이 작성되어 있어 LED를 켜거나 끌 수 있도록 동작되어

있습니다. 이제 기본적인 내용은 참고 하실 수 있을 거라 생각됩니다.

 

궁금하신 분은 문의주세요.

 

오늘도 수고했습니다.

 

 

 

#include <IRremote.h>

 

int RECV_PIN = 11;

int i = 0;

unsigned long remo = 0;

 

IRrecv irrecv(RECV_PIN);

 

decode_results results;

 

void setup()

{

Serial.begin(9600);

pinMode(13, OUTPUT);

pinMode(2, OUTPUT);

irrecv.enableIRIn(); // Start the receiver

}

 

void loop() {

if (irrecv.decode(&results)) {

 

//Serial.println(results.value, HEX);

remo = results.value;

Serial.println(remo, HEX);

if(remo == 0xFFA25D)

{

digitalWrite(13, HIGH);

for(i=0 ; i < 99 ; i++ ) // 원하는 횟수 반복

{

digitalWrite(2, HIGH); // 2번 핀으로 켜짐

delayMicroseconds(1500); // 1.5ms 동안의 시간을 지연

digitalWrite(2, LOW); // 2번 핀으로 꺼짐

delay(5); // 5ms 동안 지연

}

// delay(1000); // 1초 동안 동작 멈춤

 

}

else if(remo == 0xFFE21D)

{

digitalWrite(13, LOW);

for(i=0 ; i < 99 ; i++ )// 원하는 횟수 반복

{

digitalWrite(2, HIGH); // 2번 핀으로 켜짐

delayMicroseconds(700); // 0.7ms 동안의 시간을 지연

digitalWrite(2, LOW); // 2번 핀으로 꺼짐

delay(5); // 5ms 동안 지연

}

//delay(1000); // 1초 동안 동작 멈춤

 

}

irrecv.resume(); // Receive the next value

}

}

+ Recent posts