Robot Futbolista con Arduino Uno

Son robots controlados a distancia diseñados para simular un partido de fútbol se enfrentan en un campo de juego similar al deporte original (Futbol).

Características

Dimensiones máximas
Largo:  120 mm
Ancho: 115 mm (con llantas)

Componentes principales
Arduino Uno
Modulo Bluetooth HC-05
Driver de motor L298N
Motorreductores de plástico

Materiales necesarios

1 Arduino Uno

1 Modulo Driver l298N

1 Modulo Bluetooth HC-05

2 Motorreductores con llanta

2 Baterías de 4.2 (18650)

1 Porta pilas para 18650

Cables jumper macho-hembra

1 Interruptor pequeño

Diagrama de conexión

Código Arduino

// Definimos la variable "estado" que se recibe del Puerto Serial (Bluetooth).
int estado;
//Pines de conexión del driver.
//Conexiones para el motor 1 (sentido de giro del motor).
int IN1 = 5;
int IN2 = 4;
//Conexiones para el motor 2 (sentido de giro del motor).
int IN3 = 3;
int IN4 = 2;
// Función de configuraciones en la placa, se ejecutará una sola vez.
void setup() {
  // Definimos los Pines asignados al Motor 1 como salidas.
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  // Definimos los Pines asignados al Motor 2 como salidas.
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  // Se Inicializa la comunicación serial a 9600 bits por segundo.
  Serial.begin(9600);
}
// Función principal, se ejecutará en bucle.
void loop(){
  if(Serial.available()>0){
  // Se asigna a la variable "estado" el valor que se recibe del puerto serial (Bluetooth).
  estado = Serial.read();
  //Las variables que se reciben por Bluetooth de la aplicación móvil son: 'F' (Forward): mover adelante; 'B' (Backward) : mover atrás; 'L' (Left): girar a la izquierda; 'R' (Right): girar a la derecha; 'S' (Stop): detener motores
  //Se compara el valor de la variable "estado", para moverse en el sentido que cumpla con el valor de la variable.
  //Si variable "estado" es igual "F": los motores giran para moverse hacia adelante.
  if(estado=='F'){
    // Si IN1 está en HIGH y IN2 en LOW, el motor 1 gira en sentido horario Si IN1 está en LOW y IN2 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    // Si IN3 está en HIGH y IN4 en LOW, el motor 1 gira en sentido horario Si IN3 está en LOW y IN4 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    //Ambos motores giran en sentido horario para logra el movimiento hacia adelante.
  }
  //Si variable "estado" es igual "R": los motores giran para moverse hacia la derecha.
  if(estado=='R'){
    // Si IN1 está en HIGH y IN2 en LOW, el motor 1 gira en sentido horario Si IN1 está en LOW y IN2 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    // Si IN3 está en HIGH y IN4 en LOW, el motor 1 gira en sentido horario Si IN3 está en LOW y IN4 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    //El motor 1 gira en sentido horario y el motor 2 en sentido antihorario para lograr el giro hacia la derecha.
  }
  //Si variable "estado" es igual "L": los motores giran para moverse hacia la izquierda.
  if(estado == 'L'){
    // Si IN1 está en HIGH y IN2 en LOW, el motor 1 gira en sentido horario Si IN1 está en LOW y IN2 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    // Si IN3 está en HIGH y IN4 en LOW, el motor 1 gira en sentido horario Si IN3 está en LOW y IN4 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    //El motor 1 gira en sentido antihorario y el motor 2 en sentido horario para lograr el giro hacia la izquierda.
  }
  //Si variable "estado" es igual "B": los motores giran para moverse hacia atrás.
  if(estado=='B'){
    // Si IN1 está en HIGH y IN2 en LOW, el motor 1 gira en sentido horario Si IN1 está en LOW y IN2 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    // Si IN3 está en HIGH y IN4 en LOW, el motor 1 gira en sentido horario Si IN3 está en LOW y IN4 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    //Ambos motores giran en sentido antihorario para logra el movimiento hacia atrás.
  }
  //Si variable "estado" es igual "S": el giro de los motores se detienen.
  if(estado=='S'){
    // Si IN1 está en HIGH y IN2 en LOW, el motor 1 gira en sentido horario Si IN1 está en LOW y IN2 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    // Si IN3 está en HIGH y IN4 en LOW, el motor 1 gira en sentido horario Si IN3 está en LOW y IN4 en HIGH el motor 1 gira en sentido antihorario.
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
    //Al estar en LOW ambos pines de salida de cada motor, ambos motores detienen su movimiento.
  }
  // Este código es sencillo de entender y es ideal para iniciar en la programación del robot futbolista.
}

App de control

Descarga desde Play Store la app de de tu preferencia.

También puedes descargar la app «Bluetooth RC Controller» que recomendamos desde el siguiente enlace:

Descomprime el archivo .zip descargado en el enlace e instala la aplicación.

Vincula a través del Bluetooth de tu celular con el modulo Bluetooth «HC-05», el pin solicitado por defecto es el PIN: «1234» o «0000».

Actualizaciones del boletín

Introduce tu dirección de correo electrónico para suscribirte a nuestro boletín

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *