10 เมษายน 2555

4 เมษายน 2555 (code รถ bluetooth)

ส่วนของรถ bluetooth ที่ผมทำนั้นไม่ได้ต่างจากรถที่ถูกควบคุมด้วยserial port โดยผมใช้คำสั่งรับค่าจาก serialport ซึ่งผมใช้ bluetooth ESD200ในการติดต่อกับอุปกรณ์ที่จะมาควบคุมโดยจะต่อตามข้างล่างนี้

ESD200         ATMEGA1280
GND    --->   GND
3V        --->  3v3
RXD     --->  TX
TXD     --->  RX

โดยหากยังไม่อยากใช้ bluetooth ก็สามารถใช้สายUSBต่อกับบอร์ดแล้วต่อเข้าคอมพิวเตอร์ก่อนก็ได้โดยจะลองสั่งงานผ่านterminalดูก็ได้

ข้อมูลเพิ่มเติม
ใช้ kinect ควบคุม http://kritsitti.blogspot.com/2012/03/29-2555-kinect.html
การทำงาน           http://kritsitti.blogspot.com/2012/03/28-2555-bluetooth.html
ภาพรวมของระบบ http://kritsitti.blogspot.com/2012/03/27-2555-bluetooth.html
ตั้งค่าBluetooth     http://kritsitti.blogspot.com/2012/04/5-2555-bluetoothbluetooth.html
Serial port            http://kritsitti.blogspot.com/2012/03/26-2555-serialport-in-arduno.html
PWM                  http://kritsitti.blogspot.com/2012/03/23-2555pwm-arduno.html


ส่วนของโค๊ตก็ลองทดสอบดูไม่แนะนำให้ลอกนะครับเพราะจะเป็นการปิดกั้นความสามารถของตนเอง
//ฝั่ง arduno


//BluetoothCar Project
//author krit
//Date 11/4/2012


int pwm1=9;       int pwm2=8;
int m1D1=22;      int m1D2=23;
int m2D1=32;      int m2D2=33;
int in;
int total=0;
char state=0;

void countSec();
void go(int speedM);
void back(int speedM);
void tLeft(int speedM);
void tRight(int speedM);
void stopM();

void setup()
{
  pinMode(m1D1,OUTPUT);
  pinMode(m1D2,OUTPUT);
  pinMode(m2D1,OUTPUT);
  pinMode(m2D2,OUTPUT);
  Serial.begin(9600);
  Serial.print("Start\n");
}
void loop()
{
  total=0;
  state=0;
  if(Serial.available()>0){
    state=Serial.read();
    while(Serial.available()==0 && state!='s');
    if(Serial.available()>0 && state!='s'){
      total=(Serial.read());
      //total=(total-66)*10;
    }
  }
  if(state!=0){
    switch(state){
      case 'G':  go(total);    break;
      case 'B':  back(total);  break;
      case 'L':  tLeft(total); break;
      case 'R':  tRight(total);break;
      case 'S':  stopM();    break;
      default:  stopM();
    }  
  }
}

void go(int speedM){
  Serial.print("Go!\t");
  Serial.print(speedM);
  Serial.print("\n");
  analogWrite(pwm1, speedM);
  digitalWrite(m1D1,HIGH);
  digitalWrite(m1D2,LOW);
  analogWrite(pwm2, speedM);
  digitalWrite(m2D1,HIGH);
  digitalWrite(m2D2,LOW);
}

void back(int speedM){
  Serial.print("Back!\t");
  Serial.print(speedM);
  Serial.print("\n");
  analogWrite(pwm1, speedM);
  digitalWrite(m1D2,HIGH);
  digitalWrite(m1D1,LOW);
  analogWrite(pwm2, speedM);
  digitalWrite(m2D2,HIGH);
  digitalWrite(m2D1,LOW);
}

void tLeft(int speedM){
  Serial.print("turnLeft!\t");
  Serial.print(speedM);
  Serial.print("\n");
  analogWrite(pwm1, speedM);
  digitalWrite(m1D2,HIGH);
  digitalWrite(m1D1,LOW);
  analogWrite(pwm2, speedM);
  digitalWrite(m2D2,LOW);
  digitalWrite(m2D1,HIGH);
}

void tRight(int speedM){
  Serial.print("turnRight!\t");
  Serial.print(speedM);
  Serial.print("\n");
  analogWrite(pwm1, speedM);
  digitalWrite(m1D2,LOW);
  digitalWrite(m1D1,HIGH);
  analogWrite(pwm2, speedM);
  digitalWrite(m2D2,HIGH);
  digitalWrite(m2D1,LOW);
}

void stopM(){
  Serial.print("Stop!\n");
  digitalWrite(pwm2, HIGH);
  digitalWrite(pwm1, HIGH);
  digitalWrite(m1D2,HIGH);
  digitalWrite(m1D1,HIGH);
  digitalWrite(m2D2,HIGH);
  digitalWrite(m2D1,HIGH);
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น