#include <IRremote.h>
#include <IRremoteInt.h>
#include <Servo.h>
#include <IRremoteInt.h>
#include <Servo.h>
int APIN_NEARREAD = 1; // ir 거리측정
int DPIN_RECV_IR = 11;
int DPIN_SERVOR = 9; // 서보모터 9 번핀 ..
int DPIN_DCAF = 7; // DC모터 7 번핀 ..
int DPIN_DCAB = 8; // DC모터 8 번핀 ..
int DPIN_SERVOR = 9; // 서보모터 9 번핀 ..
int DPIN_DCAF = 7; // DC모터 7 번핀 ..
int DPIN_DCAB = 8; // DC모터 8 번핀 ..
Servo myservo;
IRrecv irrecv(DPIN_RECV_IR); //IRrecv 객체를 만듭니다 (아날로그 5번핀으로 수신)
decode_results result; //수신받은 데이타를 저장할 구조체를 만듭니다
IRrecv irrecv(DPIN_RECV_IR); //IRrecv 객체를 만듭니다 (아날로그 5번핀으로 수신)
decode_results result; //수신받은 데이타를 저장할 구조체를 만듭니다
volatile unsigned long IR_code;
void setup()
{
irrecv.enableIRIn(); //수신을 시작합니다
irrecv.blink13(true); //수신받았을 경우 아두이노 13번핀을 깜빡입니다
{
irrecv.enableIRIn(); //수신을 시작합니다
irrecv.blink13(true); //수신받았을 경우 아두이노 13번핀을 깜빡입니다
myservo.attach(DPIN_SERVOR); // 9 번핀 ..
myservo.write(90); // 서보 모터 움직임
pinMode(DPIN_DCAF,OUTPUT); // 전진
pinMode(DPIN_DCAB,OUTPUT); // 후진
digitalWrite(DPIN_DCAF,LOW);
digitalWrite(DPIN_DCAB,LOW);
myservo.write(90); // 서보 모터 움직임
pinMode(DPIN_DCAF,OUTPUT); // 전진
pinMode(DPIN_DCAB,OUTPUT); // 후진
digitalWrite(DPIN_DCAF,LOW);
digitalWrite(DPIN_DCAB,LOW);
Serial.begin(9600);
}
}
void loop()
{
if(!irrecv.decode(&result)) return; //수신받은게 없으면 아래를 수행하지 않습니다.
if(result.decode_type == SAMSUNG){ //삼성리모콘이면
Serial.println("Samsung");
} else if(result.decode_type == LG){ //LG리모콘이면
Serial.println("LG");
} else { //기타 NEC, SONY, RC5 등을 쓴다면 else if 로 추가해주세요
//Serial.println("Other :" + result.value);
Serial.print("Other Remote :");
}
{
if(!irrecv.decode(&result)) return; //수신받은게 없으면 아래를 수행하지 않습니다.
if(result.decode_type == SAMSUNG){ //삼성리모콘이면
Serial.println("Samsung");
} else if(result.decode_type == LG){ //LG리모콘이면
Serial.println("LG");
} else { //기타 NEC, SONY, RC5 등을 쓴다면 else if 로 추가해주세요
//Serial.println("Other :" + result.value);
Serial.print("Other Remote :");
}
IR_code = result.value;
switch (IR_code)
{
case (0xA9AEAB34):
Serial.println("Front Data Dn : ");
fn_carmove("F");
break;
//case (0xF3EAEB56):
case (0x32D19EA0):
Serial.println("Back Data Dn : ");
fn_carmove("B");
break;
{
case (0xA9AEAB34):
Serial.println("Front Data Dn : ");
fn_carmove("F");
break;
//case (0xF3EAEB56):
case (0x32D19EA0):
Serial.println("Back Data Dn : ");
fn_carmove("B");
break;
case (0xF3EAEB55):
Serial.print("Left Data Dn : ");
fn_carmove("L");
break;
case (0x2804976D):
Serial.println("Right Data Dn : ");
fn_carmove("R");
break;
Serial.print("Left Data Dn : ");
fn_carmove("L");
break;
case (0x2804976D):
Serial.println("Right Data Dn : ");
fn_carmove("R");
break;
case (0x7B1FB3B8):
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Front && Left");
fn_carmove("FL");
break;
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Front && Left");
fn_carmove("FL");
break;
//case (0x32D19EA0): // 중복 됨 ..
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Front && Right");
fn_carmove("FR");
break;
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Front && Right");
fn_carmove("FR");
break;
case (0xF236570A):
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Back && Left");
fn_carmove("BL");
break;
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Back && Left");
fn_carmove("BL");
break;
case (0xF19EF067):
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Back && Right");
fn_carmove("BR");
break;
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Back && Right");
fn_carmove("BR");
break;
case (0x315CB683):
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Btn Up : Stop Action");
fn_carmove("");
break;
//digitalWrite(IN2,HIGH); //motor stop
Serial.println("Btn Up : Stop Action");
fn_carmove("");
break;
default:
Serial.print("Data: ");
Serial.println(IR_code, HEX); //받은 데이타를 16진수로 표시합니다
Serial.print("Length: ");
Serial.println(IR_code, DEC); //데이타의 길이를 10진수로 표시합니다.
Serial.print("Data: ");
Serial.println(IR_code, HEX); //받은 데이타를 16진수로 표시합니다
Serial.print("Length: ");
Serial.println(IR_code, DEC); //데이타의 길이를 10진수로 표시합니다.
break;
}
}
delay(10);
irrecv.resume(); // 다시 수신할 수 있도록 합니다
}
irrecv.resume(); // 다시 수신할 수 있도록 합니다
}
void fn_carmove(String sMode)
{
if( sMode == "F" )
{
//최대속도로정회전
fn_dcmove("F");
} else if( sMode == "FL" )
{
fn_dcmove("F");
myservo.write(30); // 서보 모터 움직임
} else if( sMode == "FR" )
{
fn_dcmove("F");
myservo.write(170); // 서보 모터 움직임
} else if( sMode == "B" )
{
fn_dcmove("B");
} else if( sMode == "BL" )
{
fn_dcmove("B");
myservo.write(30); // 서보 모터 움직임
} else if( sMode == "BR" )
{
fn_dcmove("B");
myservo.write(170); // 서보 모터 움직임
} else if( sMode == "L" )
{
myservo.write(30); // 서보 모터 움직임
} else if( sMode == "R" )
{
myservo.write(170); // 서보 모터 움직임
} else {
// 멈춤
digitalWrite(7,LOW);
digitalWrite(8,LOW);
analogWrite(6,255);
myservo.write(90); // 서보 모터 정위치
}
}
void fn_dcmove(String sMode)
{
int iNearVal = fn_irread();
if( iNearVal < 30 )
{
sMode = "";
int noteDuration = 1000 / 262;
//tone(11, 262, noteDuration);
}
if( sMode == "F" )
{
//최대속도로정회전
digitalWrite(DPIN_DCAF,HIGH);
digitalWrite(DPIN_DCAB,LOW);
analogWrite(6,255); // 속도 100% 6 번 포트
//analogWrite(6,127); // 속도 50 %
} else if( sMode == "B" )
{
//최대속도로정회전
digitalWrite(DPIN_DCAF,LOW);
digitalWrite(DPIN_DCAB,HIGH);
analogWrite(6,255);
} else {
// 멈춤
digitalWrite(DPIN_DCAF,LOW);
digitalWrite(DPIN_DCAB,LOW);
analogWrite(6,255);
}
}
{
int iNearVal = fn_irread();
if( iNearVal < 30 )
{
sMode = "";
int noteDuration = 1000 / 262;
//tone(11, 262, noteDuration);
}
if( sMode == "F" )
{
//최대속도로정회전
digitalWrite(DPIN_DCAF,HIGH);
digitalWrite(DPIN_DCAB,LOW);
analogWrite(6,255); // 속도 100% 6 번 포트
//analogWrite(6,127); // 속도 50 %
} else if( sMode == "B" )
{
//최대속도로정회전
digitalWrite(DPIN_DCAF,LOW);
digitalWrite(DPIN_DCAB,HIGH);
analogWrite(6,255);
} else {
// 멈춤
digitalWrite(DPIN_DCAF,LOW);
digitalWrite(DPIN_DCAB,LOW);
analogWrite(6,255);
}
}
int fn_irread()
{
int val;
int volt = analogRead(APIN_NEARREAD);
{
int val;
int volt = analogRead(APIN_NEARREAD);
val = (6762/(volt-9))-4;
Serial.print("ir value : " );
Serial.println(val); // 거리 값
return val;
}
Serial.println(val); // 거리 값
return val;
}
댓글 1
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | IR 리모콘 코드 따기 [1] | 묵묵이 | 2017.02.10 | 14 |
» | rc 카 작업용 [1] | 묵묵이 | 2017.02.07 | 14 |
공지 | [sketch_mydust] 미세멘지 측정기 작업 용 [2] | 묵묵이 | 2017.02.07 | 35 |
4 | 아두이노 - DC모터 제어 [3] | 묵묵이 | 2017.01.10 | 2 |
3 | 우분투(Ubuntu)에서 아두이노(Arduino) 설치하고 실행하기 | 묵묵이 | 2017.01.09 | 4 |
2 | 아두이노 보드없이 123d circuit 즐기세요 | 묵묵이 | 2017.01.09 | 1 |
1 | 아두이노 우노를 이용하여 간단한 LED 제어 하기 | 묵묵이 | 2017.01.09 | 3 |
최종 소스