Robots de Batalla

Introducción

“BattleBots” consiste en un juego de peleas entre dos robots, cada uno tiene un brazo para atacar y otro con un escudo para defenderse. Los golpes que recibe el robot los detecta un sensor piezoeléctrico que descontará una vida por golpe hasta que se quede sin vidas y el robot se inmovilice. La idea de realizar este proyecto surgió al encontrar en el blog de la asignatura un proyecto parecido, pero con un amplio margen de mejora, y este ha sido el resultado.

Componentes utilizados

  • Placa Arduino UNO x2, Préstamo
  • Servomotor x4, 3€(Ud.)
  • Sensor piezoeléctrico x2, 0,5€(Ud.)
  • Botón x4, Préstamo
  • Proto placa 400 ptos x2, 2€(Ud.)
  • Leds Colores x6, Préstamo
  • Cables x50, 6€
  • Cartón

Circuito y Montaje

El montaje de este proyecto ha sido todo realizado a mano con cartón con los realizábamos rectángulos y cubos para realizar el cuerpo y brazos de los robots, la base es una caja de madera reciclada y como base una lona simulando un ring de boxeo.
El circuito es el siguiente:
El código es el siguiente:
#include <Servo.h>
int pinmot =8;
int pinmot2 =4;
int boton = 13;
int boton2 = 6;
int ledv=2;
int leda =10;
int ledr = 17;
int estado,estado2;
Servo motord;
Servo motora;
int pind = 0;
int pinl = 10;
int valor;
int vidas = 3;
void setup() {
 Serial.begin(9600);
motord.attach(pinmot);
motora.attach(pinmot2);
pinMode(boton, INPUT);
pinMode(boton2, INPUT);
pinMode(leda, OUTPUT);
pinMode(ledv, OUTPUT);
pinMode(ledr, OUTPUT);
digitalWrite(leda,HIGH);
digitalWrite(ledv,HIGH);
digitalWrite(ledr,HIGH);
}
void loop() {
  valor = analogRead(pind);
  estado = digitalRead(boton);
  estado2 = digitalRead(boton2);
  Serial.println(estado);
 if(estado == HIGH){
   motord.write(0);
   delay(150);
   motord.write(130);
   delay(100);
 }
  if(estado2 == HIGH){
   motora.write(0);
   delay(75);
   motora.write(120);
   delay(150);
 }
 if(valor>100){
   vidas = vidas -1;
  delay(200);
 switch(vidas){
    case 3:
      digitalWrite(ledr,HIGH);
      digitalWrite(leda,HIGH);
      digitalWrite(ledv,HIGH);
      break;
    case 2:
      digitalWrite(ledr,HIGH);
      digitalWrite(leda,HIGH);
      digitalWrite(ledv,LOW);
      break;
    case 1:
      digitalWrite(ledr,HIGH);
      digitalWrite(leda,LOW);
      digitalWrite(ledv,LOW);
      break;
    case 0:
      fiesta();
      break;
 }
  }
}
  void fiesta(void){
    while(true){
    digitalWrite(ledr,HIGH);
    delay(100);
    digitalWrite(ledr,LOW);
    digitalWrite(leda,HIGH);
    delay(100);
    digitalWrite(leda,LOW);
    digitalWrite(ledv,HIGH);
    delay(100);
    digitalWrite(ledv,LOW);
    }
  }

Problemas y soluciones

La base del ring fue el primer problema, ya que intentamos hacerlo con planchas de madera las cuales se doblaron, la solución a este problema fue utilizar una caja de madera reciclada la cual estaba perfectamente cuadrada y sin desnivel. Hemos tenido bastantes problemas en el montaje de los robots de cartón, los cuales eran recortes imprecisos que se retocaban según se iban progresando en el montaje.
Otro problema fue la debilidad de los cables de los sensores piezoeléctricos que se desprendían del sensor con mucha facilidad. Los botones nos han generado problemas ya que cablearlos sin utilizar la protoplaca es complejo y genera muchos falsos positivos los cuales accionan los brazos repetidamente.

Posibles mejoras

Una de las mejoras es hacer los robots mas estéticos, pintarlos, darles una forma más redondeada, introducir más detalles etc. También se podía mejorar el sistema de vidas del robot ya que cuando un robot se queda sin vidas es necesario reiniciar las dos placas de Arduino. Se podría implementar como mejora un movimiento de “amago” tanto para atacar como para defenderse.

También te podría gustar...

Deja un comentario

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