스마트폰으로 제어하는 RC카

아두이노

스마트폰으로 제어하는 RC카

원장샘 0 1,567 2017.04.20 12:52
RC카를 직접 제작할려다 RC카 키트를 구입했습니다.
기본 부품이 없는 상태에서 RC카를 만든다는게 부담이 되더군요. 부품을 부분적으로 1개씩 구입하는것보다는 키트를 구입하는게 저렴(?)할거 같아 키트를 구입하게 되었습니다.
대량 구입을 한다면 부품별로 구입하는게 더 싸겠지만 단품일경우 배송비가 추가로 들어서 부품값보다 배송비가 더 많아지는...

thumb-2009513293_kzYypRoj_3a12627b63afc26ee4d334c2680f2814fab3c9b0_600x1067.jpg

첨부된 부품목록입니다.

thumb-2009513293_nMimusYa_b251de5000b30b03575c9bb0b2d011b310bf126a_600x398.jpg

조립 메뉴얼이 포함되어 있습니다.

thumb-2009513293_ozSaPKu3_bb5a84cd738448544cd58b44f318f8ad875e9cd8_600x338.jpg

완성된 모습입니다.

업체에서 제공된 스케치 코드가 완벽하지 않아서 몇군데 수정을 하였습니다.

※ 블루투스 HC-06모듈을 사용했는데 제 스파트폰에서는 인식을 하지 못하여 구형 스마트폰으로 제어 앱을 설치하였습니다. 아두이노 공부를 할려면 구형 스마트폰도 필요하더군요..


#include  <SoftwareSerial.h> //시리얼 통신 라이브러리 호출

#include <AFMotor.h>

#include <Wire.h>


//모터 PIN 설정

#define LEFT_A1 4 //왼쪽 바퀴

#define LEFT_B1 5 //왼쪽 바퀴

#define RIGHT_A2 6 //오른쪽 바퀴

#define RIGHT_B2 7 //오른쪽 바퀴


//블루투스 PIN 설정

#define BLUE_TX 0 //블루투스 TX

#define BLUE_RX 1 //블루투스 RX


SoftwareSerial mySerial(BLUE_TX, BLUE_RX);  //시리얼 통신을 위한 객체선언

char value; //블루투스에서 받는 값

AF_DCMotor motor1(1, MOTOR12_64KHZ);// 1번모터 객체 생성,속도 64KHz pwm (L293D 에서 좌측 모터 2개 통제)

AF_DCMotor motor2(2, MOTOR12_64KHZ);// 2번모터 객체 생성,속도 64KHz pwm (L293D 에서 우측 모터 2개 통제)

int cpos=90;


//dc 모터 

byte leftspeed = 120;

byte rightspeed =120;



void setup() {

  Serial.begin(9600);   //시리얼모니터 

  mySerial.begin(9600); //블루투스 시리얼 개방

  motor1.setSpeed(230);// 초기 모터 속도,200~255중 임의 조정(두개의 모터속도가 같으면 된다.)

  motor2.setSpeed(230);//

  Serial.println("Arduino Bluetooth Car is ready to start");

}


void loop() {

  while(mySerial.available())  //mySerial에 전송된 값이 있으면

  {

     value = mySerial.read(); //전송값 읽음

     Serial.print(value);

     if(value == '3'){            //좌회전(강)

       Serial.println("left");

       left();


     }else if(value == '4'){      //우회전(강)

       Serial.println("right");

       right();


     }else if(value == '1'){      //전진

       Serial.println("forward");

       forward();

     }else if(value == '2'){      //후진

       Serial.println("backward");

       backward();

     }else if(value == '9'){      //정지

       Serial.println("stop");    

       stop(); 

     }  

}

}


// 자동차 움직임 정의 Function 들

void forward(){

  motor1.run(FORWARD); // 1 forword

  motor2.run(FORWARD); // 2 forword

}

void backward(){

  motor1.run(BACKWARD);// 1 BACKWARD

  motor2.run(BACKWARD);// 2 BACKWARD

}

void left(){

  motor1.run(RELEASE);

  motor2.run(FORWARD);// 2번 FORWARD

  delay(50);

  motor1.run(FORWARD); // 1번 다시

}

void right(){

 motor1.run(FORWARD);// 1번 FORWARD

   motor2.run(RELEASE);

delay(50);

motor2.run(FORWARD);

}


void stop(){

  motor1.run(RELEASE);

  motor2.run(RELEASE);

}

Comments

Category
State
  • 현재 접속자 3 명
  • 오늘 방문자 29 명
  • 어제 방문자 241 명
  • 최대 방문자 394 명
  • 전체 방문자 320,329 명
  • 전체 게시물 2,591 개
  • 전체 댓글수 105 개
  • 전체 회원수 85 명
Facebook Twitter GooglePlus KakaoStory NaverBand