viernes, 14 de marzo de 2014

BiRueda Autónomo (+ Giro sobre sí mismo)

          Siguiendo con el BiRueda Autónomo (más bien podría llamarse programado, ya que lo que tiene es una rutina que repite continuamente) vamos a añadirle ahora dos funciones de giro nuevas a la rutina que se repite. Vamos a implementar el giro en sentido horario y el giro en sentido antihorario sobre sí mismo.


          Podemos observar como el prototipo diseñado y que vamos a utilizar es el mismo que el de la entrada anterior, por lo que no hay que explicar mucho más. Los giros se realizan de manera muy sencilla de esta forma: basta con invertir el sentido de una de las ruedas dependiendo de en que sentido queramos hacer el giro.

//Importamos la libreria AFMotor.h
#include <AFMotor.h>

//Creamos los dos motores que estan conectados al M1 y M2 respectivamente con una frecuencia de 64KHZ
AF_DCMotor motor(1, MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_64KHZ);

int velocidad;

//Función 'Setup'
void setup(){
  //Ajustamos la una velocidad
  velocidad = 150;
  //Lo iniciamos parados
  motor.run(RELEASE);
  motor2.run(RELEASE);
  
  //Inicializamos Serial
  Serial.begin(9600);
  Serial.println("Test Motor");
  
  //Le damos la velocidad a los motores
  motor.setSpeed(velocidad);
  motor2.setSpeed(velocidad);
  
}

//Función 'Loop'
void loop(){
  Serial.println("BiRueda Autonomo (Giro sí mismo Test)");
 
  //Movimiento hacia delante
  motor.run(FORWARD);
  motor2.run(FORWARD);
  
  //Dejamos 2 segundos de movimiento
  delay(2000);
  
  //Paramos
  motor.run(RELEASE);
  motor2.run(RELEASE);
  
  //Dejamos 1 segundos de parado
  delay(1000);
  
  //Un segundo de giro en un sentido
  motor.run(FORWARD);
  motor2.run(BACKWARD);
  delay(1000);
  
  //Paramos
  motor.run(RELEASE);
  motor2.run(RELEASE);
  
  //Dejamos 1 segundos de parado
  delay(1000);
  
  //Movimiento hacia atrás
  motor.run(BACKWARD);
  motor2.run(BACKWARD);
  
  //Dejamos 2 segundos de movimiento
  delay(2000);
  
  //Paramos
  motor.run(RELEASE);
  motor2.run(RELEASE);
  
  //Dejamos 1 segundos de parado
  delay(1000);
  
  //Un segundo de giro en un sentido
  motor.run(BACKWARD);
  motor2.run(FORWARD);
  delay(1000);
  
  //Paramos
  motor.run(RELEASE);
  motor2.run(RELEASE);
  
  //Dejamos 1 segundos de parado
  delay(1000);
}


          Podéis observar como funciona con el vídeo, recordando que aún las ruedas no están bien calibradas (de ahí la desviación que sufre)