#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 |
23 | sprintf2 사용법 | 묵묵이 | 2017.02.07 | 5 |
22 |
디지털 온 습도계 사용 DHT22
[2] ![]() | 묵묵이 | 2017.02.06 | 5 |
21 | 미세먼지 측정기 참조 [3] | 묵묵이 | 2017.02.06 | 5 |
20 | test ir 리모컨 테스트 [1] | 묵묵이 | 2017.01.23 | 5 |
19 | ir 리모컨 값 기록 | 묵묵이 | 2017.01.18 | 2 |
18 | 아두이노 IR 리모컨 R 신호 반복문제 test | 묵묵이 | 2017.01.18 | 6 |
17 | 아두이노 톤함수를 사용하지 않고 부저 소리내기 | 묵묵이 | 2017.01.17 | 1 |
16 | 키보드로 멜로디 연주하기 | 묵묵이 | 2017.01.17 | 4 |
15 | 아두이노에 작은별 멜로디 스케치 | 묵묵이 | 2017.01.17 | 4 |
14 |
아두이노 미세먼지 측정기 .. 만들기
![]() | 묵묵이 | 2017.01.17 | 2 |
13 | 서버모터 테스트 소스 | 묵묵이 | 2017.01.16 | 7 |
12 | 서보모터 제어하기 | 묵묵이 | 2017.01.16 | 1 |
11 | 아두이노 프로 미니 보드와 USB TO TTL 모듈을 이용한 프로그램 업로드 | 묵묵이 | 2017.01.13 | 1 |
10 |
ir 리모컨 수신 test ( 현제 작업중 소스)
[1] ![]() | 묵묵이 | 2017.01.12 | 4 |
9 | ir 적외선 센서를 이용한 거리 측청 - test 잘됨 | 묵묵이 | 2017.01.12 | 2 |
8 | 초음파 센서 참고 소스 [1] | 묵묵이 | 2017.01.12 | 4 |
7 | 아두이노 기초강좌 - IR 센서 [1] | 묵묵이 | 2017.01.11 | 7 |
6 | Arduino 아두이노 - relay module control 릴레이 모듈 제어 [1] | 묵묵이 | 2017.01.10 | 19 |
5 | 아두이노 나노 알아보기 | 묵묵이 | 2017.01.10 | 2 |
최종 소스