CATAPULTA DE LA MUERTE
CATAPULTA DE LA MUERTE
1. Introducción
Nuestra intención a la hora de crear este proyecto es crear una catapulta controlada
por una placa Arduino. La cual podrá funcionar de manera automática, es decir,
detectando automáticamente los objetivos y, en consecuencia, disparando hacia ellos,
o podemos hacerla funcionar de manera manual, controlándola mediante un mando.
2. Módulos
Podemos separar el diseño de nuestro proyecto en dos módulos que hemos diseñado:
el módulo mecánico (más orientado al diseño de la catapulta y sus respectivos
movimientos) y el módulo eléctrico (basado en los diferentes elementos que
controlamos con Arduino y sus respectivas conexiones).
MECÁNICA
Podemos visualizar dos grandes partes en nuestro proyecto:
Base inferior: la cual se encarga de sostener la siguiente parte y la mayoría de la
electrónica de nuestro proyecto. Esta parte tiene cuatro ruedas que nos permitirán
girar nuestra parte superior y que permitirá apuntar a la catapulta en distintas
direcciones.
Base superior: la cual sostiene todo el diseño de la catapulta y la electrónica.
Catapulta: esta esta formada por:
Listones: los cuales utilizamos para hacer el brazo de la catapulta.
Tapón de botella: el cual utilizamos como zona para situar los
proyectiles de nuestra catapulta.
Tornillos: se usan para sujetar ciertas partes de la catapulta, incluida la
parte que evita que vaya más allá de donde debe la catapulta, y el eje de
movimiento del brazo de la catapulta.
Escuadras: las cuales utilizamos para sujetar la madera que sujeta el
servomotor con el muelle y para anclar el tornillo que sujeta el brazo de
la catapulta
PÁGINA 3
Muelle: es el que permite lanzar los proyectiles ya que tensa la
catapulta sujetándose sobre un poste de madera que hemos situado
verticalmente a la base, enganchado al servomotor.
Clavos: para sujetar mas fuertemente las distintas partes.
Silicona caliente: para que no se muevan los distintos componentes.
Caja: para poner el tubo en angulo.
Cargador: es utilizado para cargar los proyectiles automáticamente en
la catapulta. Esta formado por un tubo donde introduciremos los
proyectiles que queremos disparar y un servomotor permitirá que
pasen de una en una cuando sea necesario, gracias a un tapón de
madera que se mueve dejando paso a un único proyectil.
ELECTRÓNICA
Servomotores: (x4) encontramos varios servomotores situados en varias partes:
En la base inferior: Este servomotor se encarga de hacer los giros de
nuestra catapulta. Esta conectado al pin 5, ademas de a positivo y negativo.
En el cargador: Permite introducir los proyectiles uno a uno en nuestra
catapulta cuando esta esté preparada para recibirlo. Estos proyectiles se
encuentran en un tubo, cuidadosamente colocado. Esta conectado al pin 9,
ademas de a positivo y negativo.
Sujetando la catapulta: Permite mantener la catapulta situada abajo para
poder tensar el muelle. Esta conectado al pin 10, ademas de a positivo y
negativo. Se queda en 90º esperando la orden de ser disparada, una vez
hecho esto pasa a 0º espera a que se mueva el muelle y se pone a 90º y
espera a ser lanzado donde se pondrá a 180º al lanzarlo.
Tensando el muelle. Esta conectado al pin 6, ademas de a positivo y
negativo. Pasa a la posición 0º mientras se prepara, y a 180º a la espera de
ser disparado.
Sensor: HC-SR04 : usamos este sensor debido a problemas técnicos con el
anteriormente comprado, ya que este dejo de funcionar, pusimos este sensor es de
ultrasonidos, con una muy buena definición a la hora de encontrar objetivos. El pin vcc
va a positivo, el gnd a negativo, el trig a 11 y echo a 3.
Led: Este led estará luciendo cuando la catapulta este preparada para ser disparada, y
apagado cuando se este preparando para el lanzamiento.
PÁGINA 4
Placa de arduino: para que la catapulta haga todo el proceso debidamente
programado.
Pila de 9v: (x4) puesto que consume mucho.
Protoboard: (x3) Se usan tres protoboard para hacer las distintas conexiones
eléctricas del circuito, una para el mando con los botones, otra para el sensor de
ultrasonidos, y la ultima para las distintas conexiones a positivo, negativo y los
distintos pines de inserción.
Mando a distancia: Formado por tres botones:
Interruptor: Nos permite escoger si queremos modo automático o modo
manual. Pin 12, ademas de a positivo y negativo. Los siguientes botones solo
funcionan en modo manual.
Rojo: nos permite girar a la derecha. Pin 7, ademas de a positivo y negativo.
Blanco: nos permite girar a la izquierda. Pin 8., ademas de a positivo y
negativo
Amarillo. Botón de disparo, nos permite disparar a un objetivo siempre y
cuando este preparada la catapulta. Pin 4, ademas de a positivo y negativo.
Ademas, para conectar los botones, aunque no se vea en la catapulta hay
que poner una resistencia, para que el funcionamiento sea correcto en
Arduino.
3. Funcionamiento
El funcionamiento de nuestra catapulta se podría explicar mediante pasos:
INTERRUPTOR
Para pasar del modo automático al manual hemos introducido un interruptor
que nos permitirá cambia de modo automático a manual al instante.
PÁGINA 5
PREPARACIÓN
La catapulta se prepara para todo el proceso. Lo primero que debe hacer es
el servo que lanza la catapulta ha de moverse a la posición 0º, esperando la
catapulta. El servo del muelle baja hasta la posición 0º, para que el servo que
lanza la catapulta sujete la misma poniéndose a 90º, el servo del dispensador de
proyectiles se mueve a 45º durante 115 milisegundos para volver a la posición 0º,
lo que habrá permitido pasar a un único proyectil, el servo del muelle se pone en
180º , preparado para disparar en cuanto reciba la orden y el led ya que esto se ha
completado, se iluminara.
MODO AUTOMÁTICO
Se buscan objetivos. La catapulta empezará seguidamente a buscar objetivos
mediante el sensor y girando paulatinamente hacia los lados, cuyo angulo tope
es de 180º.
Encuentra un objetivo. En cuanto el sensor detecta un objetivo el es activada
de manera automática, el modo de disparo, y si el objetivo es derribado, sigue
buscando mas objetivos hasta que los encuentra o hasta que el interruptor
cambia a modo manual.
MODO MANUAL
Buscar un blanco. Mediante los botones que encontramos en el mando
giramos la catapulta a izquierda y/o derecha (botones rojo y blanco) hasta
localizar al blanco, y cuando creamos que tenemos el blanco localizado,
disparamos pulsando el botón amarillo.
PÁGINA 6
4. Planos
Plano de la mecánica.
• Plano de la electrónica.
PÁGINA 7
5. Código
#include <Servo.h>
Servo servo_base;
Servo servo_muelle;
Servo servo_pelota;
Servo servo_lanza;
int posicionbase=0;
int preparado=0;
int boton_der=7;
int boton_izq=8;
int interruptor=12;
int boton_disparo=4;
const int ledpreparado=13;
int automatico=0;
int distancia_detectada=0;
int pintrigger=11;
int pinecho=3;
void setup() {
Serial.begin(9600);
servo_base.attach(5);
servo_muelle.attach(6);
servo_pelota.attach(9);
servo_lanza.attach(10);
//attachInterrupt(0, mover_derecha,LOW);
//attachInterrupt(1, mover_izquierda,LOW);
pinMode(ledpreparado,OUTPUT);
pinMode(pinecho,INPUT);
pinMode(pintrigger,OUTPUT);
}
PÁGINA 8
void loop() {
if(preparado==0){
//preparar la catapulta
preparado=prepararcatapulta();
}
if(digitalRead(interruptor)==LOW){
//modo manual, con mando
if(digitalRead(boton_der)==HIGH){
posicionbase=moverderecha();
}
if(digitalRead(boton_izq)==HIGH){
posicionbase=moverizquierda();
}
servo_base.write(posicionbase);
delay(10);
if(digitalRead(boton_disparo)==HIGH){
//disparar la catapulta
preparado=dispararcatapulta();
}
}
else{
//modo automatico
if(automatico==0){
moverizquierda();
}
else{
moverderecha();
}
PÁGINA 9
servo_base.write(posicionbase);
distancia_detectada=leerUltrasonidos();
if(distancia_detectada<=35 && distancia_detectada >=18){
preparado=dispararcatapulta();
}
delay(50);
}
}
int prepararcatapulta(){
servo_lanza.write(0);
delay(500);
servo_muelle.write(0);//bajar la catapulta
delay(500);
servo_lanza.write(90);
delay(500);
servo_pelota.write(45);
delay(115);
servo_pelota.write(0);
delay(500);
servo_muelle.write(180);//extender muelle
delay(500);
digitalWrite(ledpreparado,HIGH);
delay(100);
preparado=1;
return preparado;
}
int dispararcatapulta(){
servo_lanza.write(180);
delay(500);
digitalWrite(ledpreparado,LOW);
delay(100);
PÁGINA 10
preparado=0;
return preparado;
}
int moverizquierda(){
posicionbase–;
if(posicionbase<=0){
posicionbase=0;
automatico=1;
}
return posicionbase;
}
int moverderecha(){
posicionbase++;
if(posicionbase>=180){
posicionbase=180;
automatico=0;
}
return posicionbase;
}
int leerUltrasonidos(){
digitalWrite(pintrigger,LOW);
delayMicroseconds(2);
digitalWrite(pintrigger,HIGH);
delayMicroseconds(10);
digitalWrite(pintrigger,LOW);
int tiempo=pulseIn(pinecho,HIGH);
int distancia=tiempo/58;
return distancia;
}
Nuestra intención a la hora de crear este proyecto es crear una catapulta controlada
por una placa Arduino. La cual podrá funcionar de manera automática, es decir,
detectando automáticamente los objetivos y, en consecuencia, disparando hacia ellos,
o podemos hacerla funcionar de manera manual, controlándola mediante un mando.
2. Módulos
Podemos separar el diseño de nuestro proyecto en dos módulos que hemos diseñado:
el módulo mecánico (más orientado al diseño de la catapulta y sus respectivos
movimientos) y el módulo eléctrico (basado en los diferentes elementos que
controlamos con Arduino y sus respectivas conexiones).
MECÁNICA
Podemos visualizar dos grandes partes en nuestro proyecto:
Base inferior: la cual se encarga de sostener la siguiente parte y la mayoría de la
electrónica de nuestro proyecto. Esta parte tiene cuatro ruedas que nos permitirán
girar nuestra parte superior y que permitirá apuntar a la catapulta en distintas
direcciones.
Base superior: la cual sostiene todo el diseño de la catapulta y la electrónica.
Catapulta: esta esta formada por:
Listones: los cuales utilizamos para hacer el brazo de la catapulta.
Tapón de botella: el cual utilizamos como zona para situar los
proyectiles de nuestra catapulta.
Tornillos: se usan para sujetar ciertas partes de la catapulta, incluida la
parte que evita que vaya más allá de donde debe la catapulta, y el eje de
movimiento del brazo de la catapulta.
Escuadras: las cuales utilizamos para sujetar la madera que sujeta el
servomotor con el muelle y para anclar el tornillo que sujeta el brazo de
la catapulta
PÁGINA 3
Muelle: es el que permite lanzar los proyectiles ya que tensa la
catapulta sujetándose sobre un poste de madera que hemos situado
verticalmente a la base, enganchado al servomotor.
Clavos: para sujetar mas fuertemente las distintas partes.
Silicona caliente: para que no se muevan los distintos componentes.
Caja: para poner el tubo en angulo.
Cargador: es utilizado para cargar los proyectiles automáticamente en
la catapulta. Esta formado por un tubo donde introduciremos los
proyectiles que queremos disparar y un servomotor permitirá que
pasen de una en una cuando sea necesario, gracias a un tapón de
madera que se mueve dejando paso a un único proyectil.
ELECTRÓNICA
Servomotores: (x4) encontramos varios servomotores situados en varias partes:
En la base inferior: Este servomotor se encarga de hacer los giros de
nuestra catapulta. Esta conectado al pin 5, ademas de a positivo y negativo.
En el cargador: Permite introducir los proyectiles uno a uno en nuestra
catapulta cuando esta esté preparada para recibirlo. Estos proyectiles se
encuentran en un tubo, cuidadosamente colocado. Esta conectado al pin 9,
ademas de a positivo y negativo.
Sujetando la catapulta: Permite mantener la catapulta situada abajo para
poder tensar el muelle. Esta conectado al pin 10, ademas de a positivo y
negativo. Se queda en 90º esperando la orden de ser disparada, una vez
hecho esto pasa a 0º espera a que se mueva el muelle y se pone a 90º y
espera a ser lanzado donde se pondrá a 180º al lanzarlo.
Tensando el muelle. Esta conectado al pin 6, ademas de a positivo y
negativo. Pasa a la posición 0º mientras se prepara, y a 180º a la espera de
ser disparado.
Sensor: HC-SR04 : usamos este sensor debido a problemas técnicos con el
anteriormente comprado, ya que este dejo de funcionar, pusimos este sensor es de
ultrasonidos, con una muy buena definición a la hora de encontrar objetivos. El pin vcc
va a positivo, el gnd a negativo, el trig a 11 y echo a 3.
Led: Este led estará luciendo cuando la catapulta este preparada para ser disparada, y
apagado cuando se este preparando para el lanzamiento.
PÁGINA 4
Placa de arduino: para que la catapulta haga todo el proceso debidamente
programado.
Pila de 9v: (x4) puesto que consume mucho.
Protoboard: (x3) Se usan tres protoboard para hacer las distintas conexiones
eléctricas del circuito, una para el mando con los botones, otra para el sensor de
ultrasonidos, y la ultima para las distintas conexiones a positivo, negativo y los
distintos pines de inserción.
Mando a distancia: Formado por tres botones:
Interruptor: Nos permite escoger si queremos modo automático o modo
manual. Pin 12, ademas de a positivo y negativo. Los siguientes botones solo
funcionan en modo manual.
Rojo: nos permite girar a la derecha. Pin 7, ademas de a positivo y negativo.
Blanco: nos permite girar a la izquierda. Pin 8., ademas de a positivo y
negativo
Amarillo. Botón de disparo, nos permite disparar a un objetivo siempre y
cuando este preparada la catapulta. Pin 4, ademas de a positivo y negativo.
Ademas, para conectar los botones, aunque no se vea en la catapulta hay
que poner una resistencia, para que el funcionamiento sea correcto en
Arduino.
3. Funcionamiento
El funcionamiento de nuestra catapulta se podría explicar mediante pasos:
INTERRUPTOR
Para pasar del modo automático al manual hemos introducido un interruptor
que nos permitirá cambia de modo automático a manual al instante.
PÁGINA 5
PREPARACIÓN
La catapulta se prepara para todo el proceso. Lo primero que debe hacer es
el servo que lanza la catapulta ha de moverse a la posición 0º, esperando la
catapulta. El servo del muelle baja hasta la posición 0º, para que el servo que
lanza la catapulta sujete la misma poniéndose a 90º, el servo del dispensador de
proyectiles se mueve a 45º durante 115 milisegundos para volver a la posición 0º,
lo que habrá permitido pasar a un único proyectil, el servo del muelle se pone en
180º , preparado para disparar en cuanto reciba la orden y el led ya que esto se ha
completado, se iluminara.
MODO AUTOMÁTICO
Se buscan objetivos. La catapulta empezará seguidamente a buscar objetivos
mediante el sensor y girando paulatinamente hacia los lados, cuyo angulo tope
es de 180º.
Encuentra un objetivo. En cuanto el sensor detecta un objetivo el es activada
de manera automática, el modo de disparo, y si el objetivo es derribado, sigue
buscando mas objetivos hasta que los encuentra o hasta que el interruptor
cambia a modo manual.
MODO MANUAL
Buscar un blanco. Mediante los botones que encontramos en el mando
giramos la catapulta a izquierda y/o derecha (botones rojo y blanco) hasta
localizar al blanco, y cuando creamos que tenemos el blanco localizado,
disparamos pulsando el botón amarillo.
PÁGINA 6
4. Planos
Plano de la mecánica.
• Plano de la electrónica.
PÁGINA 7
5. Código
#include <Servo.h>
Servo servo_base;
Servo servo_muelle;
Servo servo_pelota;
Servo servo_lanza;
int posicionbase=0;
int preparado=0;
int boton_der=7;
int boton_izq=8;
int interruptor=12;
int boton_disparo=4;
const int ledpreparado=13;
int automatico=0;
int distancia_detectada=0;
int pintrigger=11;
int pinecho=3;
void setup() {
Serial.begin(9600);
servo_base.attach(5);
servo_muelle.attach(6);
servo_pelota.attach(9);
servo_lanza.attach(10);
//attachInterrupt(0, mover_derecha,LOW);
//attachInterrupt(1, mover_izquierda,LOW);
pinMode(ledpreparado,OUTPUT);
pinMode(pinecho,INPUT);
pinMode(pintrigger,OUTPUT);
}
PÁGINA 8
void loop() {
if(preparado==0){
//preparar la catapulta
preparado=prepararcatapulta();
}
if(digitalRead(interruptor)==LOW){
//modo manual, con mando
if(digitalRead(boton_der)==HIGH){
posicionbase=moverderecha();
}
if(digitalRead(boton_izq)==HIGH){
posicionbase=moverizquierda();
}
servo_base.write(posicionbase);
delay(10);
if(digitalRead(boton_disparo)==HIGH){
//disparar la catapulta
preparado=dispararcatapulta();
}
}
else{
//modo automatico
if(automatico==0){
moverizquierda();
}
else{
moverderecha();
}
PÁGINA 9
servo_base.write(posicionbase);
distancia_detectada=leerUltrasonidos();
if(distancia_detectada<=35 && distancia_detectada >=18){
preparado=dispararcatapulta();
}
delay(50);
}
}
int prepararcatapulta(){
servo_lanza.write(0);
delay(500);
servo_muelle.write(0);//bajar la catapulta
delay(500);
servo_lanza.write(90);
delay(500);
servo_pelota.write(45);
delay(115);
servo_pelota.write(0);
delay(500);
servo_muelle.write(180);//extender muelle
delay(500);
digitalWrite(ledpreparado,HIGH);
delay(100);
preparado=1;
return preparado;
}
int dispararcatapulta(){
servo_lanza.write(180);
delay(500);
digitalWrite(ledpreparado,LOW);
delay(100);
PÁGINA 10
preparado=0;
return preparado;
}
int moverizquierda(){
posicionbase–;
if(posicionbase<=0){
posicionbase=0;
automatico=1;
}
return posicionbase;
}
int moverderecha(){
posicionbase++;
if(posicionbase>=180){
posicionbase=180;
automatico=0;
}
return posicionbase;
}
int leerUltrasonidos(){
digitalWrite(pintrigger,LOW);
delayMicroseconds(2);
digitalWrite(pintrigger,HIGH);
delayMicroseconds(10);
digitalWrite(pintrigger,LOW);
int tiempo=pulseIn(pinecho,HIGH);
int distancia=tiempo/58;
return distancia;
}