Taca-Gol

    Para la realización de este proyecto el primer problema fue el nombre, no era un Pinball, un Flipper o un Tacataca, así que le puse Taca-Gol, lo que en realidad no tiene importancia alguna para este proyecto.

    Es un juego para dos jugadores que presionando unos micro switchs  mueven dos paletas que impulsan a una bola de cristal por la cancha, tratando de meter un gol. Lo ideal hubiera sido utilizar 4 servos, pero solo tenía dos, así que en el diagrama pueden ver como lo solucioné colocando una paleta más larga que gira en su centro y lleva un engranaje que disminuye la velocidad del servo, pero aumenta la potencia del golpe.

    Este video que viene más abajo, contiene todos los detalles necesarios para comprender y realizar este proyecto, además al final encontrarán, cada una de las partes del video por separado, para no tener que verlo completo, estas partes son:

volver


Video proyecto TacaGol

    Software Arduino para copiar

#include <Servo.h> // incluimos librería de servos
Servo Servo_1; // creamos un primer objeto servo que se llama Servo_1
Servo Servo_2; // creamos un segundo objeto servo que se llama Servo_2

int led_1 = 6; // a la variable led_1 le asignamos valor '6'
int led_2 = 7; // a la variable led_2 le asignamos valor '7'
int led_3 = 8; // a la variable led_3 le asignamos valor '8'
int led_4 = 9; // a la variable led_4 le asignamos valor '9'

int boton1 = 0; // a la variable boton1 le asignamos valor '0'
int boton2 = 0; // a la variable boton2 le asignamos valor '0'
int boton3 = 0; // a la variable boton3 le asignamos valor '0'
int boton4 = 0; // a la variable boton4 le asignamos valor '0'

void setup() {
Serial.begin(9600); // iniciamos puerto serial a 9600 baudios
Serial.print("A prepararse... comienza el juego"); // imprimimos en pantalla 

pinMode(2, INPUT); // pin 2 como 'INPUT'
pinMode(3, INPUT); // pin 3 como 'INPUT'
pinMode(4, INPUT); // pin 4 como 'INPUT'
pinMode(5, INPUT); // pin 5 como 'INPUT'

pinMode(6, OUTPUT); // pin 6 como 'OUTPUT'
pinMode(7, OUTPUT); // pin 7 como 'OUTPUT'
pinMode(8, OUTPUT); // pin 8 como 'OUTPUT'
pinMode(9, OUTPUT); // pin 9 como 'OUTPUT'

Servo_1.attach(12); // enviamos señal ancho de pulso a Servo_1 por pata 12
Servo_2.attach(11); // enviamos señal ancho de pulso a Servo_2 por pata 11
}

void loop() {
boton1 = digitalRead(2); // almacenamos en boton1 variables de puerto digital 2
boton2 = digitalRead(3); // almacenamos en boton2 variables de puerto digital 3
boton3 = digitalRead(4); // almacenamos en boton3 variables de puerto digital 4
boton4 = digitalRead(5); // almacenamos en boton4 variables de puerto digital 5

Serial.print("boton1: "); Serial.print(boton1); // imprimimos texto y valores de boton1
Serial.print(" boton2: "); Serial.print(boton2); // imprimimos texto y valores de boton2
Serial.print(" boton3: "); Serial.print(boton3); // imprimimos texto y valores de boton3
Serial.print(" boton4: "); Serial.println(boton4); // imprimimos texto y valores de boton4

Servo_1.write(93); // ponemos Servo_1 en posición intermedia
Servo_2.write(98); // ponemos Servo_2 en posición intermedia

digitalWrite(led_1, HIGH); // ponemos 5 voltios en salida pin 2
digitalWrite(led_2, HIGH); // ponemos 5 voltios en salida pin 3
digitalWrite(led_3, HIGH); // ponemos 5 voltios en salida pin 4
digitalWrite(led_4, HIGH); // ponemos 5 voltios en salida pin 5

//........................... movimientos servo 1
if (boton1 == LOW) { // si el boton1 = 'LOW'
digitalWrite(led_1, LOW); // al pin 6 que se llama led_1 lo ponemos en 0 voltio
Servo_1.write(180); // al Servo_1 lo giramos hasta 180° 
}
if (boton2 == LOW) { // si el boton2 = 'LOW'
digitalWrite(led_2, LOW); // al pin 7 que se llama led_2 lo ponemos en 0 voltio
Servo_1.write(0); // al Servo_1 lo giramos hasta 0° 
}

//........................... movimientos servo 2
if (boton3 == LOW) { // si el boton3 = 'LOW'
digitalWrite(led_3, LOW); // al pin 8 que se llama led_3 lo ponemos en 0 voltio
Servo_2.write(180); // al Servo_1 lo giramos hasta 180° 
}
if (boton4 == LOW) { // si el boton4 = 'LOW'
digitalWrite(led_4, LOW); // al pin 9 que se llama led_4 lo ponemos en 0 voltio
Servo_2.write(0); // al Servo_1 lo giramos hasta 0° 
}
}

Fotografías del Proyecto
    Podemos ver claramente las paletas, los micro swtichs, los engranajes y la tarjeta Arduino Nano soportada en una placa junto a otros componentes.
La cancha lleva 4 leds que se encienden cuando se presionan los Micro Switchs.
Todo el cableado va por debajo.
Dos vistas de la placa con el Arduino Nano.
Un engranaje va conectado al eje del Servo y el otro forma parte de la paleta
Detalles del Servo.
    Detalle del micro Switch y uno de los Leds, que está montado en un soporte de plástico, hecho con una printer 3D.


Paleta y engranajes en tamaño original

    Este dibujo se puede imprimir y recortar en madera para hacer las paletas y engranajes. Como detalle de estos últimos, para los que lo qieran hacer en FreeCad, son engranajes de Módulo 3 con 10 y 20 dientes respectivamente.
Vistas de soporte de los Leds, de los Micro Switch y de la tarjeta impresa

    Estos dibujos no están en tamaño original, solo es para tener una idea al respecto, si alguien lo necesita, me puede solicitar los archivos .STL para imprimir en una Printer 3D


Circuito Impreso


Demo del Juego

    Ahora veremos un demo del juego, donde mi hija y mi nieta se enfrentan. Lo ideal sería pintar la cancha y poner diferentes logos como en los flippers, lo dejé todo al natural para que se viera más clara la construcción y sus diferentes piezas.

     El circuito es bastante sencillo comparado con otros proyectos, lleva un Arduino nano, 2 Servos, 4 PushButton, 8 resistencias de 220 Ohms, 4 Leds  y un conector para la batería. 

Descripción del Circuito

Descripción del Software


Cualquier duda... pueden escribirme a robot@tongas.cl o gastoncenteno@vtr.net