감추기
MCU멤버스이벤트
홈 > 센서/모듈/키트 > 교육용키트/교재 > 아두이노 키트

아두이노 블루투스 스마트카 키트 [DV1801-KIT]
아두이노와 모터에 대한 이해가 쑥쑥! 모터드라이버 쉴드를 이용해서 납땜 없이 블루투스 스마트카를 만들 수 있습니다.
판매가격 : 41,280
적립금 :413
상품상태 :신상품
제품코드 :1358545
제조사 :엔티렉스
출시일 :2018-02-07
구매수량 :
고객선호도 :★★★★
총 금액 :

253,000원
148,500원
60,000원
146,000원
2,310원
66,000원
132,000원
6,000원
83,600원
242,000원
상세정보 배송/취소/교환안내 이용후기 상품Q&A
아두이노 블루투스 스마트카 키트

구성품

 

보고 따라하는 사용 가이드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#define MOTOR_A_SPD 10  //모터A의 속력을 결정하는 핀
#define MOTOR_B_SPD 11  //모터B의 속력을 결정하는 핀
#define MOTOR_A_DIR 12  //모터A의 방향을 결정하는 핀
#define MOTOR_B_DIR 13  //모터B의 방향을 결정하는 핀
#define A_BAL 1   //모터A 속력 균형 계수 기본값 1
#define B_BAL 1   //모터B 속력 균형 계수 기본값 1
 
unsigned char m_a_spd = 0, m_b_spd = 0; //모터의 속력을 결정하는 전역변수
boolean m_a_dir = 0, m_b_dir = 0; //모터의 방향을 결정하는 전역변수
 
void setup() 
{
  Serial.begin(9600); //시리얼 통신 초기화
 
  pinMode(MOTOR_A_DIR, OUTPUT); //모터A 방향 핀 출력으로 설정
  pinMode(MOTOR_B_DIR, OUTPUT); //모터B 방향 핀 출력으로 설정
   
  Serial.println("Hello!"); //터미널 작동 확인용 문자열
}
 
void loop()
{
  unsigned char bt_cmd = 0; //명령어 저장용 문자형 변수
 
  if (Serial.available()) //데이터가 입력되었을 때
  {
    bt_cmd = Serial.read(); //변수에 입력된 데이터 저장
    rc_ctrl_val(bt_cmd);  //입력된 데이터에 따라 모터에 입력될 변수를 조정하는 함수
  }
  motor_drive();  //모터를 구동하는 함수
}
 
void rc_ctrl_val(unsigned char cmd) //입력된 데이터에 따라 모터에 입력될 변수를 조정하는 함수
{
  if(cmd == 'w'//'w'가 입력되었을 때, 전진
  {
    m_a_dir = 1;  //모터A 정방향
    m_b_dir = 0;  //모터B 정방향
    m_a_spd = 128*A_BAL;  //모터A의 128의 PWM
    m_b_spd = 128*B_BAL;  //모터B의 128의 PWM
  }
  else if(cmd == 'a'//'a'가 입력되었을 때, 제자리 좌회전
  {
    m_a_dir = 1;  //모터A 정방향
    m_b_dir = 1;  //모터B 역방향
    m_a_spd = 128*A_BAL;  //모터A의 128의 PWM
    m_b_spd = 128*B_BAL;  //모터B의 128의 PWM
  }
  else if(cmd == 'd'//'d'가 입력되었을 때, 제자리 우회전
  {
    m_a_dir = 0;  //모터A 역방향
    m_b_dir = 0;  //모터B 정방향
    m_a_spd = 128*A_BAL;  //모터A의 128의 PWM
    m_b_spd = 128*B_BAL;  //모터B의 128의 PWM
  }
  else if(cmd == 's'//'s'가 입력되었을 때, 후진
  {
    m_a_dir = 0;  //모터A 역방향
    m_b_dir = 1;  //모터B 역방향
    m_a_spd = 128*A_BAL;  //모터A의 128의 PWM
    m_b_spd = 128*B_BAL;  //모터B의 128의 PWM
  }
  else if(cmd == 'x')
  {
    m_a_dir = 1;  //모터A 정방향
    m_b_dir = 0;  //모터B 정방향
    m_a_spd = 0;  //모터A의 정지
    m_b_spd = 0;  //모터B의 정지
  }
}
 
void motor_drive()  //모터를 구동하는 함수
{
  digitalWrite(MOTOR_A_DIR, m_a_dir);  //모터A의 방향을 디지털 출력
  digitalWrite(MOTOR_B_DIR, m_b_dir);  //모터B의 방향을 디지털 출력
  analogWrite(MOTOR_A_SPD, m_a_spd);  //모터A의 속력을 PWM 출력
  analogWrite(MOTOR_B_SPD, m_b_spd);  //모터B의 속력을 PWM 출력
}
※ 공급 제조사는 재고 사정에 따라 동일 사양의 대체상품으로 공급될 수 있습니다.
※ 상기 제품에 첨부된 데이타시트는 참고사항입니다.데이타시트에 표기된 내용에 대하여 본사는 어떠한 기술적인 문의 및 발생하는 문제에 대한 법적인 책임을 지지는 않습니다. 
※ 사용자께서는 사용 전 반드시 제품에 대한 테스트 및 확인 절차 후 사용하시기 바랍니다

상세정보 배송/취소/교환안내 이용후기 상품Q&A