#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 | 12 |
» | rc 카 작업용 [1] | 묵묵이 | 2017.02.07 | 11 |
공지 | [sketch_mydust] 미세멘지 측정기 작업 용 [2] | 묵묵이 | 2017.02.07 | 15 |
42 | RFID 정보를 읽고 쓸 수 있는 Proxmark3 | 묵묵이 | 2024.09.13 | 1 |
41 | [Android,Java] 안드로이드 - AES256 암호화 및 복호화 예제 소스 다운로드 | 묵묵이 | 2022.06.12 | 0 |
40 | 교류모터 속도제어킷 | 묵묵이 | 2021.05.02 | 7 |
39 | WiFiHTTPSServer test | 묵묵이 | 2020.03.02 | 7 |
38 | 8GLIB 유저매뉴얼 구글번역 | 묵묵이 | 2020.02.29 | 5 |
37 | 아두이노 2.4G 통신 모듈 사용하기 | 묵묵이 | 2019.04.04 | 9 |
36 | 전기가용량 계산 방법 - 전압, 전류와 전력량 측정에 대한 내용 | 묵묵이 | 2017.07.27 | 9 |
35 | 초저렴 iot 모듈 | 묵묵이 | 2017.06.04 | 8 |
34 | 적정 습도 / 미세먼지 값보정 | 묵묵이 | 2017.05.11 | 8 |
33 | 5V동작 20A 전류 센서 모듈 측정하기 ... [6] | 묵묵이 | 2017.04.17 | 16 |
32 | 먼지 센서 구매 하는곳 ... | 묵묵이 | 2017.04.15 | 7 |
31 | 라즈베리파이 프로그램 자동 실행 | 묵묵이 | 2017.03.12 | 8 |
30 | 라즈베리파일 설정 | 묵묵이 | 2017.03.11 | 6 |
29 | [라즈베리파이] C언어를 이용한 GPIO 입출력 제어 [3] | 묵묵이 | 2017.03.07 | 5 |
28 | 와이파이 모듈(ESP8266) 공유기 연결 AT 명령어 [1] | 묵묵이 | 2017.02.26 | 6 |
27 | 아두이노 EEPROM 사용해보기 | 묵묵이 | 2017.02.20 | 6 |
26 | [아두이노] 0.96인치 OLED LCD 모듈 텍스트 출력 [2] | 묵묵이 | 2017.02.20 | 9 |
25 | HEX to DEC | 묵묵이 | 2017.02.10 | 5 |
최종 소스