sábado, 22 de junio de 2013

Programa del Arduino y control con la aplicación "Bluetooth RC".

Puedes descargar el programa que hicimos aquí MachineGun Arduino.

Éste es el código de Arduino:

#include <Servo.h>

Servo x;
Servo y;
Servo shoot;
int pos1;
int pos2;

int motorA = 2;
int motorB = 3;
int dirA = 4;
int dirB = 5;
int luz = 11;
int led=13;
char c;
boolean apuntar = false;

void adelante();
void reversa();
void parado();
void derecha();
void izquierda();
void adelanteDerecha();
void adelanteIzquierda();
void atrasDerecha();
void atrasIzquierda();


void encenderLuz();

void setup(){
  Serial.begin(9600);
  pinMode(led, OUTPUT); 
  pinMode(motorA, OUTPUT); 
  pinMode(motorB, OUTPUT); 
  pinMode(dirA, OUTPUT); 
  pinMode(dirB, OUTPUT); 
  pinMode(luz, OUTPUT);
  x.attach(9);
  y.attach(10);
  shoot.attach(8);
  x.write(90);
  y.write(90);
  shoot.write(50);  
}

void loop(){
  while (Serial.available()) {
    if (Serial.available() >0) {
      c = Serial.read();
    }
  }

  if(apuntar == false){
    switch(c){
    case 'F':
      adelante();
      break;
    case 'B':
      reversa();
      break;
    case 'S':
      parado();
      break;
    case 'L':
      izquierda();
      break;
    case 'R':
      derecha();
      break;
    case 'G':
      adelanteIzquierda();
      break;
    case 'I':
      adelanteDerecha();
      break;
    case 'H':
      atrasIzquierda();
      break;
    case 'J':
      atrasDerecha();
      break; 
    case 'W':
      encenderLuz();
      break;
    case 'w':
      apagarLuz();
      break;
    case 'X':
      apuntar = true; 
      break;
     case 'v':
      shoot.write(50);
      break; 
    }
  }
  else{
    switch(c){
    case 'B':              //HACIA ARRIBA
      pos1++;
      if(pos1 > 100){
        pos1=100;
      }
      y.write(pos1);
      break;
    case 'F':                //HACIA ABAJO
      pos1--;
      if(pos1 < 60){
        pos1=60;
      }
      y.write(pos1);
      break;
    case 'L':
      pos2++;
      if(pos2>180){
        pos2=180;
      }
      x.write(pos2);
      break;
    case 'R':
      pos2--;
      if(pos2<0){
        pos1=0;
      }
      x.write(pos2);
      break;
    case 'x':
      apuntar = false; 
      break;
    case 'V':
      shoot.write(100);
      break;
    case 'v':
      shoot.write(50);
      break;
    } 
    delay(5); 
  }
}

void adelante(){
  digitalWrite(motorA,HIGH);
  digitalWrite(motorB,LOW);
  digitalWrite(led,HIGH);
}

void reversa(){
  digitalWrite(motorA,LOW);
  digitalWrite(motorB,HIGH);
  digitalWrite(led,HIGH);
}

void parado(){
  digitalWrite(motorA,LOW);
  digitalWrite(motorB,LOW);
  digitalWrite(led,LOW);
  digitalWrite(dirA,LOW);
  digitalWrite(dirB,LOW);
}

void izquierda(){
  digitalWrite(dirB,LOW);
  digitalWrite(dirA,HIGH);
  digitalWrite(led,HIGH);
}

void derecha(){
  digitalWrite(dirB,HIGH);
  digitalWrite(dirA,LOW);
  digitalWrite(led,HIGH);
}

void adelanteIzquierda(){
  digitalWrite(dirB,LOW);
  digitalWrite(dirA,HIGH);
  digitalWrite(motorB,LOW);
  digitalWrite(motorA,HIGH);
  digitalWrite(led,HIGH);
}

void adelanteDerecha(){
  digitalWrite(dirB,HIGH);
  digitalWrite(dirA,LOW);
  digitalWrite(led,HIGH);
  digitalWrite(motorA,HIGH);
  digitalWrite(motorB,LOW);
}

void atrasIzquierda(){
  digitalWrite(dirB,LOW);
  digitalWrite(dirA,HIGH);
  digitalWrite(motorB,HIGH);
  digitalWrite(motorA,LOW);
  digitalWrite(led,HIGH);
}

void atrasDerecha(){
  digitalWrite(dirB,HIGH);
  digitalWrite(dirA,LOW);
  digitalWrite(led,HIGH);
  digitalWrite(motorB,HIGH);
  digitalWrite(motorA,LOW);
}

void encenderLuz(){
  digitalWrite(luz,HIGH);
}

void apagarLuz(){
  digitalWrite(luz,LOW);
}



Control del auto mediante la aplicación y cómo utilizamos los botones:





No hay comentarios:

Publicar un comentario