아두이노 > 아두이노 rc카 조종

TODAY1,015 TOTAL273,962
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


▼ BASIC4MCU 후원업체 최신 정보 ▼

▲ BASIC4MCU 후원업체 최신 정보 ▲

BASIC4MCU | 아두이노 | 아두이노 | 아두이노 rc카 조종

페이지 정보

작성자 아이스 작성일2018-08-20 21:48 조회283회 댓글1건

본문

	
1. 아래 소스는 제가 만든 소스인데 블루투스 와 적외선 리모컨으로 조종이 가능할까요?

#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h> 
//=====================================
//
//차량 속도 제어
#define level1  0x08//속도 제어 레벨1
#define level2  0x09//속도 제어 레벨2
#define level3  0x0A//속도 제어 레벨3
#define level4  0x0B//속도 제어 레벨4
#define level5  0x0C//속도 제어 레벨5
#define level6  0x0D//속도 제어 레벨6
#define level7  0x0E//속도 제어 레벨7
#define level8  0x0F//속도 제어 레벨8
//==============================
//==============================
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
int on = 0;//标志位
unsigned long last = millis();

long run_car = 0x00FF18E7;//버튼2
long back_car = 0x00FF4AB5;//버튼8
long left_car = 0x00FF10EF;//버튼4
long right_car = 0x00FF5AA5;//버튼6
long stop_car = 0x00FF38C7;//버튼5
long left_turn = 0x00ff30CF;//버튼1
long right_turn = 0x00FF7A85;//버튼3
//==============================
int Left_motor_back=9;
int Left_motor_go=5;

int Right_motor_go=6;
int Right_motor_back=10;

int Right_motor_en=8;
int Left_motor_en=7;

int control;//PWM 제어량

void setup()
{
  //
  pinMode(Left_motor_go,OUTPUT); // PIN 5 (PWM)
  pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM)
  pinMode(Right_motor_go,OUTPUT);// PIN 6 (PWM) 
  pinMode(Right_motor_back,OUTPUT);// PIN 10 (PWM)
  pinMode(Right_motor_en,OUTPUT);// PIN 8 (PWM)
  pinMode(Left_motor_en,OUTPUT);// PIN 7 (PWM)
  pinMode(13, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();

  control=0;
}

void run()
{
  digitalWrite(Left_motor_en,HIGH);
  digitalWrite(Left_motor_en,HIGH);
  digitalWrite(Right_motor_go,HIGH);
  digitalWrite(Right_motor_back,LOW);    
  analogWrite(Right_motor_go,control);
  //analogWrite(Right_motor_back,0);
  analogWrite(Right_motor_go,200);
  analogWrite(Right_motor_back,0);
  digitalWrite(Left_motor_go,HIGH);
  digitalWrite(Left_motor_back,LOW);
  analogWrite(Left_motor_go,200);
  analogWrite(Left_motor_back,0);
  analogWrite(Left_motor_go,control-15);
  //delay(time * 100);
}

void brake()
{
  digitalWrite(Right_motor_go,LOW);
  digitalWrite(Right_motor_back,LOW);
  digitalWrite(Left_motor_go,LOW);
  digitalWrite(Left_motor_back,LOW);
  //delay(time * 100);  
}

void left()
{
  digitalWrite(Right_motor_go,HIGH);
  digitalWrite(Right_motor_back,LOW);
  analogWrite(Right_motor_go,control);
  analogWrite(Right_motor_go,200); 
  analogWrite(Right_motor_back,0);
  digitalWrite(Left_motor_go,LOW);
  digitalWrite(Left_motor_back,LOW);
  analogWrite(Left_motor_go,0); 
  analogWrite(Left_motor_back,0);
  //delay(time * 100); 
}

void spin_left()
{
  digitalWrite(Right_motor_go,HIGH);
  digitalWrite(Right_motor_back,LOW);
  analogWrite(Right_motor_go,control);
  analogWrite(Right_motor_go,200); 
  analogWrite(Right_motor_back,0);
  digitalWrite(Left_motor_go,LOW);
  digitalWrite(Left_motor_back,HIGH);
  //analogWrite(Left_motor_go,0);
  analogWrite(Left_motor_go,0); 
  analogWrite(Left_motor_back,200);
  analogWrite(Left_motor_back,control);
  //delay(time * 100); 
}

void right()
{
  digitalWrite(Right_motor_go,LOW);
  digitalWrite(Right_motor_back,LOW);
  analogWrite(Right_motor_go,0); 
  analogWrite(Right_motor_back,0);
  digitalWrite(Left_motor_go,HIGH);
  digitalWrite(Left_motor_back,LOW);
  analogWrite(Left_motor_go,control);
  analogWrite(Left_motor_go,200); 
  analogWrite(Left_motor_back,0); 
  //analogWrite(Left_motor_back,0);//
  //delay(time * 100);  //
}

void spin_right()
{
  digitalWrite(Right_motor_go,LOW);
  digitalWrite(Right_motor_back,HIGH);
  analogWrite(Right_motor_go,0); 
  analogWrite(Right_motor_back,control);
  analogWrite(Right_motor_back,200);
  digitalWrite(Left_motor_go,HIGH);
  digitalWrite(Left_motor_back,LOW);
  analogWrite(Left_motor_go,200); 
  analogWrite(Left_motor_back,0); 
  analogWrite(Left_motor_go,control);
  //delay(time * 100);  //
}

void back()
{
  digitalWrite(Right_motor_go,LOW);
  digitalWrite(Right_motor_back,HIGH);
  analogWrite(Right_motor_go,0);
  analogWrite(Right_motor_back,control);
  analogWrite(Right_motor_back,150);
  digitalWrite(Left_motor_go,LOW);
  digitalWrite(Left_motor_back,HIGH);
  analogWrite(Left_motor_go,0);
  analogWrite(Left_motor_back,150); 
  analogWrite(Left_motor_back,control-15);//
  //delay(time * 100);     //
}

void dump(decode_results *results)
{
  int count = results->rawlen;
  if (results->decode_type == UNKNOWN) 
  {
    //Serial.println("Could not decode message");
    brake();
  } 

/*
  else 
  {

    if (results->decode_type == NEC) 
    {
      Serial.print("Decoded NEC: ");
    } 
    else if (results->decode_type == SONY) 
    {
      Serial.print("Decoded SONY: ");
    } 
    else if (results->decode_type == RC5) 
    {
      Serial.print("Decoded RC5: ");
    } 
    else if (results->decode_type == RC6) 
    {
      Serial.print("Decoded RC6: ");
    }
    Serial.print(results->value, HEX);
    Serial.print(" (");
    Serial.print(results->bits, DEC);
    Serial.println(" bits)");
    
  }
  Serial.print("Raw (");
  Serial.print(count, DEC);
  Serial.print("): ");

  for (int i = 0; i < count; i++) 
  {
    if ((i % 2) == 1) 
    {
      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
    } 
    else  
    {
      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
    }
    Serial.print(" ");
  }
  Serial.println("");
*/
}

void loop()
{
  
  if (irrecv.decode(&results))
  {
    // If it's been at least 1/4 second since the last
    // IR received, toggle the relay
    if (millis() - last > 250)
    {
      on = !on;//标志位置反
      digitalWrite(13, on ? HIGH : LOW);
      dump(&results);
    }
    if (results.value == run_car )//버튼2
      run();//前进
    if (results.value == back_car )//버튼8
      back();//后退
    if (results.value == left_car )//버튼4
      left();//左转
    if (results.value == right_car )//버튼6
      right();//右转
    if (results.value == stop_car )//버튼5
      brake();//停车
    if (results.value == left_turn )//버튼1
      spin_left();//左旋转
    if (results.value == right_turn )//버튼3
      spin_right();//右旋转
    last = millis();      
    irrecv.resume(); // Receive the next value
    
  }
}

2. 위 소스에 아래 소스도 합치려고 했는데 넣으면 에러가 나더라구요....

void loop()
{
   while(Serial.available())
   
  switch (Serial.read())
  {
    case run_car:
      run();
      break;
    case back_car:
      back();
      break;
    case left_car:
      left();
      break;
    case right_car:
      right();
      break;
    case   stop_car:
      brake();
      break;
    case left_turn:
      spin_left();
      break;
    case right_turn:
      spin_right();
      break;
 //======속도선택=====    
    case level1:control=50;break;
    case level2:control=100;break;
    case level3:control=140;break;
    case level4:control=160;break;
    case level5:control=180;break;
    case level6:control=200;break;
    case level7:control=220;break;
    case level8:control=255;break;
      
     default:
       brake();
      break;
  }
}

댓글 1

조회수 283

아이스님의 댓글

아이스 작성일

소스2개를 합치려고 합니다..

아두이노HOME > 아두이노 > 전체 목록

아두이노 목록
제목 작성자 작성일 조회
315 아두이노 master님 도와주세요! 새글첨부파일 누멍쓰 18-10-21 13
답변 답변글 답변 : master님 도와주세요! 새글 master 18-10-21 11
313 아두이노 아두이노 드론에 카메라 기능을 추가하고싶어요 새글 호이히우 18-10-20 6
312 아두이노 밑에 두더지잡기 수정 부탁 드린것에 질문 있습니다. 냉냉냥성냥 18-10-20 10
답변 답변글 답변 : 밑에 두더지잡기 수정 부탁 드린것에 질문 있습니다. 댓글[1] 새글 master 18-10-20 12
310 아두이노 아두이노 두더지 잡기 인데 문제가 있어서 수정좀 부탁 드립니다. 댓글[1] 냉냉냥성냥 18-10-20 15
답변 답변글 답변 : 아두이노 두더지 잡기 인데 문제가 있어서 수정좀 부탁 드립니다. master 18-10-20 8
답변 답변글 답변 : 아두이노 두더지 잡기 인데 문제가 있어서 수정좀 부탁 드립니다. 첨부파일 냉냉냥성냥 18-10-20 8
답변 답변글 답변 : 답변 : 아두이노 두더지 잡기 인데 문제가 있어서 수정좀 부탁 드립니다. 댓글[1] master 18-10-20 14
306 아두이노 작동 중인 팬모터를 블루투스와 연결된 앱으로 RPM 조절하는 코드를 추가해야하는데요. RobustWalKeR 18-10-19 11
답변 답변글 답변 : 작동 중인 팬모터를 블루투스와 연결된 앱으로 RPM 조절하는 코드를 추가해야하는데요. master 18-10-19 9
304 아두이노 master님 rc카 적외선센서 추가 질문 해도될까요? ㅠㅠ 윤재 18-10-19 13
답변 답변글 답변 : master님 rc카 적외선센서 추가 질문 해도될까요? ㅠㅠ 댓글[2] master 18-10-19 17
답변 답변글 답변 : 답변 : master님 rc카 적외선센서 추가 질문 해도될까요? ㅠㅠ 댓글[7] 새글 master 10:40 6
301 아두이노 앱인벤터 스크린마다 블루투스 댓글[1] intoo07 18-10-19 18
게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017