그랬더니 한번도 손도 안대고 있다가 할줄 모르겠다고 2014년 설날저녁에 가지고 왔어요.
저도 거의 1년만에 만지다 보니 본래 제 의도를 잘 모르겠더라구요.
할 수 없이 제가 쓴 블로그를 다시 보고 간신히 조립을 했습니다.
한 두시간정도 아두이노 개발도구를 깔고 드라이버잡고..
아두이노 UNO R3는 상당히 오래된 장치라서 아두이노 개발키트에서 드라이버 잡는것이 아주 어려웠습니다.
XP에서 아두이노 UNO R3 드라이버를 깔려면 드라이버 안에 있는 압축폴더를 풀어서 그 안에있는 INF 파일을 사용하셔야 해요..
한 두시간정도 드라이버가 안깔려서 고생을 좀 했습니다.
자세한 사진을 올리려고 했는데 동생이 그냥 가져가 버려서 중간에 찍은 사진밖에 없네요..
나중에 사진을 더 추가하겠습니다.
이것은 모터드라이버 제어선 연결입니다.
이것은 아두이노쪽의 연결이고요
왼쪽이 블루투스 RX-TX 연결 2개선이고요
오른쪽인 모터제어선 6개 입니다.
아두이노 쪽 연결의 다른 사진입니다.
블루투스 모듈의 연결입니다.
RX-TX선 연결이고요.
블루투스 연결 앞쪽이예요. 전원을 연결했어요
모터드라이버와 모터를 연결한 사진이예요.
안드로이드 제어프로그램은 "BluCar"라는 어플을 사용했습니다.
https://play.google.com/store/apps/details?id=com.uzzors2k.blu_car&hl=ko
아두이노 프로그램 소스는 아래와 같아요.
여유가 있으면 주행 동영상을 올려볼께요.
#include <SoftwareSerial.h>
int bluetoothTx = 2;
int bluetoothRx = 3;
// Left = 0x04;
// Right = 0x08;
// Forward = 0x10;
// Backward = 0x20;
int Cmd = 0;
int DRV_EN = 13;
int DRV_FW = 12;
int DRV_BW = 11;
int WHL_EN = 8;
int WHL_LT = 10;
int WHL_RT = 9;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup() {
// Setup the function of arduino pins
pinMode(DRV_EN, OUTPUT);
pinMode(DRV_FW, OUTPUT);
pinMode(DRV_BW, OUTPUT);
pinMode(WHL_EN, OUTPUT);
pinMode(WHL_LT, OUTPUT);
pinMode(WHL_RT, OUTPUT);
// Setup the serial port of arduino
Serial.begin(9600);
// Setup Bluetooth serial connecti/on to arduino
bluetooth.begin(1200);
}
void loop() {
if(bluetooth.available())
{
Cmd = bluetooth.read();
switch(Cmd & (0x04 | 0x08))
{
case 0x00:
digitalWrite(WHL_EN, LOW);
digitalWrite(WHL_LT, LOW);
digitalWrite(WHL_RT, LOW);
break;
case 0x04: // Left
digitalWrite(WHL_EN, HIGH);
digitalWrite(WHL_LT, HIGH);
digitalWrite(WHL_RT, LOW);
break;
case 0x08: // Right
digitalWrite(WHL_EN, HIGH);
digitalWrite(WHL_LT, LOW);
digitalWrite(WHL_RT, HIGH);
break;
}
switch(Cmd & (0x10 | 0x20))
{
case 0x00:
digitalWrite(DRV_EN, LOW);
digitalWrite(DRV_FW, LOW);
digitalWrite(DRV_BW, LOW);
break;
case 0x10: // Forward
digitalWrite(DRV_EN, HIGH);
digitalWrite(DRV_FW, HIGH);
digitalWrite(DRV_BW, LOW);
break;
case 0x20: // Backward
digitalWrite(DRV_EN, HIGH);
digitalWrite(DRV_FW, LOW);
digitalWrite(DRV_BW, HIGH);
break;
}
}
}
댓글 없음:
댓글 쓰기