Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 2 visitas.| 3409930 Visitas (desde Dic. 2011), hoy: 271 Visitas 854 Pag. Vistas , ultimos 36 dias: 10133 Visitas. 48531 Pag. Vistas. Tu IP: 13.58.112.1
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

Construye tu robot por menos de 20€ con Arduino. Arduino Robot Ps (6)

Arduino Robot Ps

Una  vez montado todo nuestro prototipo, nos ponemos manos a la obra con la programación.

Necesitasmos:

1 Cable USB

2 El programa para programar Arduino que nos proporciona la web www.arduino.cc

Enchufamos el cable y nos reconocerá el dispositivo con un nuevo PUERTO SERIE que se configurará automáticamente. Los drivers necesarios se encuentran en la misma carpeta del programa, junto con varios ejemplos.

Antes de nada, entraremos en

Captura

y seleccionamos el puerto de comunicaciones correspondiente a nuestro Arduino (Cada Arduino genera uno nuevo)

Sin olvidarnos que hemos de tener seleccionado nuestro tipo de Arduino:

Captura

Que nos falta?

Arduino Robot Ps

Parte 5

El programa.

Para ello partimos de un código que obtenemos de Internet y que nos valdrá para el test.

/*********************************************************************************************

  Tutorial: Robot 4x4 con Arduino
  Autor: Oscar Gonzalez - 16 Octubre 2010

http://blog.bricogeek.com/noticias/tutoriales/tutorial-robot-4x4-con-arduino/

 ********************************************************************************************/
#define MOTOR1_CTL1  8  // I1
#define MOTOR1_CTL2  9  // I2
#define MOTOR1_PWM   11 // EA

#define MOTOR2_CTL1  6  // I3
#define MOTOR2_CTL2  7  // I4
#define MOTOR2_PWM   10 // EB

#define MOTOR_DIR_FORWARD  0
#define MOTOR_DIR_BACKWARD   1

void setup()
{
  // Setup pins for motor 1
   pinMode(MOTOR1_CTL1,OUTPUT);
   pinMode(MOTOR1_CTL2,OUTPUT);
   pinMode(MOTOR1_PWM,OUTPUT);

  // Setup pins for motor 2
   pinMode(MOTOR2_CTL1,OUTPUT);
   pinMode(MOTOR2_CTL2,OUTPUT);
   pinMode(MOTOR2_PWM,OUTPUT);
}

void setSpeed(char motor_num, char motor_speed)
{
   if (motor_num == 1)
   {
      analogWrite(MOTOR1_PWM, motor_speed);
   }
   else
   {
      analogWrite(MOTOR2_PWM, motor_speed);
   }
}

void motorStart(char motor_num, byte direction)
{

   char pin_ctl1;
   char pin_ctl2;

   if (motor_num == 1)
   {
      pin_ctl1 = MOTOR1_CTL1;
      pin_ctl2 = MOTOR1_CTL2;
   }
   else
   {
      pin_ctl1 = MOTOR2_CTL1;
      pin_ctl2 = MOTOR2_CTL2;
   }

   switch (direction)
   {
     case MOTOR_DIR_FORWARD:
     {
       digitalWrite(pin_ctl1,LOW);
       digitalWrite(pin_ctl2,HIGH);
     }
     break;

     case MOTOR_DIR_BACKWARD:
     {
        digitalWrite(pin_ctl1,HIGH);
        digitalWrite(pin_ctl2,LOW);
     }
     break;
   }
}

void motorStop(char motor_num)
{
   setSpeed(motor_num, 0);
   if (motor_num == 1)
   {
     digitalWrite(MOTOR1_CTL1,HIGH);
     digitalWrite(MOTOR1_CTL2,HIGH);
   }
   else
   {
     digitalWrite(MOTOR2_CTL1,HIGH);
     digitalWrite(MOTOR2_CTL2,HIGH);
   }
}

void loop()
{
  // Start motors!
  motorStart(1, MOTOR_DIR_FORWARD);
  setSpeed(1, 200);
  motorStart(2, MOTOR_DIR_FORWARD);
  setSpeed(2, 200);

  delay(2000);

  motorStart(1, MOTOR_DIR_BACKWARD);
  setSpeed(1, 200);
  motorStart(2, MOTOR_DIR_BACKWARD);
  setSpeed(2, 200);

  delay(2000);

  motorStart(1, MOTOR_DIR_FORWARD);
  setSpeed(1, 140);
  motorStart(2, MOTOR_DIR_BACKWARD);
  setSpeed(2, 140);

  delay(2000);

  motorStart(1, MOTOR_DIR_BACKWARD);
  setSpeed(1, 140);
  motorStart(2, MOTOR_DIR_FORWARD);
  setSpeed(2, 140);

  delay(2000);

}

Copiamos y pegamos directamente sobre Arduino y transferimos…

Los vemos funcionando en el vídeo de la próxima entrada con una breve explicación de lo que pasa con este tipo de diseño.

Escribe un comentario

Tu comentario