Está en la página 1de 16

URJC

Sistemas empotrados y de tiempo real

Escuela Tcnica Superior de Ingeniera Informtica

Prctica ?inal:

Juego de canastas con Arduino


Vctor Hernndez Bermejo Gabriel Rodrguez Polaina Diego Seplveda Blanco

CURSO 2011 2012


ndice

ndice
1.- Introduccin ........................................................................................................................................................ 1 2.- Objetivos del proyecto y lecciones aprendidas ................................................................................... 2 3.- Especificaciones tcnicas .............................................................................................................................. 3 3.1.- Especificaciones Hardware .................................................................................................................. 3 3.2.- Especificaciones Software .................................................................................................................... 4 4.- Hitos a alcanzar ................................................................................................................................................. 6 4.1.- Fase inicial: Puesta a punto ................................................................................................................. 6 4.2.- Segunda fase: el primer modo de juego ......................................................................................... 6 4.3.- Fase final: el men de usuario ............................................................................................................ 7 5.- Componentes y presupuesto ....................................................................................................................... 8 6.- Esquema del sistema ....................................................................................................................................... 9 7.- Modos de juego ............................................................................................................................................... 10 8.- Dificultades surgidas .................................................................................................................................... 11 9.- Proyectos similares ....................................................................................................................................... 12

1.- Introduccin

1.- Introduccin
El proyecto desarrollado con Arduino consiste en un juego de mini-baloncesto para dos jugadores con el que podrn competir para ver cul es el mejor anotador. Para ello los jugadores dispondrn de cuatro modos de juego con los que podrn poner a prueba su puntera. Dos de los juegos consisten en anotar el mayor nmero posible de puntos en 60 segundos, con la variante de que en uno de ellos cuanto ms rpido se anote ms puntos se conseguirn por cada canasta hasta un mximo de 3 puntos por canasta. Otro de los juegos es la adaptacin del conocido juego de baloncesto HORSE que nosotros hemos nombrado como ASNO, en el que los jugadores debern intentar asignar esas cuatro letras a su contrincante para ganar la partida. Por ltimo, el cuarto modo de juego consiste en ver que jugador es capaz de llegar primero a los 11 puntos de manera que mientras anote podr seguir lanzando a canasta y slo ceder el turno al rival al fallar una canasta. La seleccin del modo de juego se hace a travs de un men principal con atractivas transiciones segn se pulse el botn Siguiente o el botn Anterior de la caja de controles. Adems de estos cuatro modos de juego al sistema se le podran aadir nuevos modos de juego de una manera sencilla, simplemente programando la dinmica del juego y aadiendo una opcin ms en el men.

3.- Especificaciones tcnicas

2.- Objetivos del proyecto y lecciones aprendidas


Los objetivos que se queran alcanzar cuando abordamos el proyecto eran los siguientes: - - - Desarrollar un sistema automatizado capaz de contar el nmero de balones encestados en cada canasta. Implementar varios modos de juego para el sistema diseado y desarrollado. Ajustar al mximo los costes manteniendo la calidad y atractivo para crear un producto asequible que pudiera tener un gran xito en el mercado.

Una vez finalizado el proyecto consideramos que hemos alcanzado todos los objetivos establecidos al principio del mismo, aunque consideramos que se podra mejorar el sistema de tanteo (este punto se ver con ms detalle en el apartado 9). Por otro lado, en cuanto a las lecciones aprendidas con el desarrollo de este proyecto podemos sealar las siguientes: - - Hemos aprendido a trabajar con componentes hardware mecnicos as como tratar las seales que stos generan. Hemos mejorado nuestras capacidades de trabajo en equipo y de comunicacin interna dentro de un grupo ya que slo uno de los miembros del grupo poda llevarse a casa el Arduino y los componentes a la vez que los dems miembros del grupo trabajaban en otras partes del proyecto generndose as una dependencia para probar el cdigo implementado.

3.- Especificaciones tcnicas

3.- Especificaciones tcnicas


3.1.- Especificaciones Hardware


Se pueden dividir las especificaciones tcnicas hardware en dos reas diferenciadas. Por un lado tenemos los controles que dispondrn los usuarios para seleccionar las opciones del men y los dispositivos de salida, y por otro los sensores colocados en las canastas para detectar cundo alguno de los jugadores ha anotado. Desde el punto de vista de los usuarios, stos dispondrn de una display de 4x7 segmentos a travs del cual se le mostrarn las distintas opciones de juego y la informacin referente a la partida en el modo de juego seleccionado. Mediante dos botones el usuario podr seleccionar la opcin de juego Siguiente o Anterior, mostrndose por el display una atractiva transicin entre las opciones. Adems los usuarios dispondrn de un botn retroiluminado que les servir para Aceptar el modo de juego seleccionado o para cambiar de jugador en los modos de juego correspondientes. Adems el sistema dispone de 4 LEDs de colores para cada jugador, verde, amarillo, rojo y blanco. Los LEDs verde, amarillo y rojo se usarn para el modo de un jugador contra otro con bonificacin por varias canastas en poco tiempo para indicar cul es la bonificacin obtenida en ese instante. Por otro lado, los LEDs de color blanco se usarn en los juegos por turnos para indicar de qu jugador es el turno. El sistema contar a su vez con un piezoelctrico que se utilizar para reproducir la conocida meloda Charge muy comn sobretodo en el mundo del baloncesto y del hockey para dar inicio a la partida. En la siguiente imagen se muestra el resultado final de la caja de controles con la disposicin del display, los distintos botones y los LEDs que la conforman.

3.- Especificaciones tcnicas

Por otro lado, la otra parte hardware del sistema consiste en los sensores colocados en las canastas para detectar cundo un jugador anota canasta. En la siguiente imagen se muestra como se ha instalado dichos sensores en las canastas:

3.2.- Especificaciones Software


En cuanto a las especificaciones software queremos destacar dos aspectos importantes. Por un lado las bibliotecas externas que hemos usado en nuestra implementacin y por otro la estructuracin y divisin de cdigo que hemos realizado. Hemos usado las bibliotecas FlexiTimer2.h y Metro.h para controlar los eventos relacionados con el tiempo. En concreto hemos usado FlexiTimer2 para los modos de juego con 60 segundos de duracin para marcar el tic de reloj y Metro como metrnomo para fijar intervalos de tiempo y comprobar cundo ha pasado el intervalo fijado. En concreto Metro.h nos ha sido muy til a la hora de compaginar la ejecucin de la cuenta atrs con la reproduccin de la meloda Charge. 4

3.- Especificaciones tcnicas

Por otro lado hemos aplicado el paradigma de programacin orientado a objetos para crear una jerarqua de clases que nos ha facilitado en gran medida la implementacin de los modos de juego y del men. La jerarqua de clases con sus respectivos mtodos es la siguiente1: Display4x7 (para el control de la pantalla): - void reseter () - void ajustarBrillo (int valor) - void mostrar (String texto) - void borrar () - void deslizarCaracterIzqDer (char caracter, int duracion) - void deslizarCaracterDerIzq (char caracter, int duracion) - void deslizarPalabraDentroIzqDer (String palabra, int duracion) - void deslizarPalabraDentroDerIzq (String palabra, int duracion) - void deslizarPalabraFueraIzqDer (String palabra, int duracion) - void deslizarPalabraFueraDerIzq (String palabra, int duracion) - void formarPalabraIzqDer (String palabra) - void formarPalabraDerIzq (String palabra) LedAnalogico (para controlar la luminosidad de un LED conectado a un puerto con salida analgica): - void encender (int intensidad) - void encender () - void apagar () LedDigital (para controlar un led conectado a un puerto con salida digital): - void encender () - void apagar () Piezoelectrico (para tocar la melodia "Charge" con un piezoelectrico): - void charge () Pulsador (para controlar un pulsador): - boolean presionado () Piezoelectrico (para controlar un boton del tipo push button con un anillo iluminado de color rojo): - void encender () - void apagar () - boolean presionado () SensorCanasta (para controlar los sensores de las canastas): - boolean presionado ()

1 En la implementacin de cada clase se detalla el funcionamiento de cada mtodo

4.- Hitos a alcanzar

4.- Hitos a alcanzar


El desarrollo e implementacin del proyecto se ha dividido en tres fases que marcan cada uno de los hitos fijados al principio y que se detallan a continuacin:

4.1.- Fase inicial: Puesta a punto


En la primera fase el proyecto se construy el sistema y se implementaron las funciones bsicas del mismo, de tal forma que era capaz de reconocer las canastas anotadas por cada uno de los jugadores y se fuera mostrando el resultado en el marcador. No se estableci un lmite de tiempo, por lo que el sistema tan slo contabilizar el nmero de balones encestados en cada una de las canastas. El hito que se pretenda alcanzar con esta fase es el crear un sistema capaz de detectar las anotaciones hechas en cada canasta y sobre el que poder implementar un modo de juego.

4.2.- Segunda fase: el primer modo de juego


En esta fase se implement un modo de juego para dos jugadores que contaba el nmero de canastas encestadas en 60 segundos, de tal forma que al final del minuto se pudiera determinar un ganador. En el marcador se mostraba la puntuacin de los jugadores, y eventualmente, cuando faltaban 45 y 30 segundos se mostrar el tiempo restante. Igualmente, durante los ltimos 10 segundos de juego se mostraba en el display la cuenta atrs hasta 0. Finalmente, al llegar a 0 se dejaban de contabilizar las canastas encestadas y se mostraba en la pantalla el resultado final. Mediante un botn se poda iniciar una nueva partida. El hito a alcanzar en esta fase era el de tener un sistema completamente funcional sobre el que implementar un men sencillo de usuario y distintos modos de juego.

4.- Hitos a alcanzar

4.3.- Fase final: el men de usuario


Finalmente se implement un sencillo men de usuario que permite seleccionar un modo de juego. Para ello el usuario dispone de tres botones, uno para cambiar a la opcin siguiente, otro para cambiar a la anterior y otro para iniciar una partida en el modo de juego seleccionado. Las opciones se le muestran al usuario como un nmero que identificar cada modo de juego. El hito a alcanzar en esta fase es el de crear una sencilla interfaz de usuario con varios modos de juego.

5.- Componentes y presupuesto

5.- Componentes y presupuesto


A continuacin se detalla una tabla con los componentes necesarios para desarrollar el sistema as como del presupuesto final del proyecto: Descripcin Placa Arduino UNO LEDs rojos LEDs amarillos LEDs verdes LEDs blancos Resistencias de 220 Ohm Resistencias de 10K Ohm Botones Piezoelctrico Display 4x7 Pulsador retroiluminado Microswitch Cable Canastas y balones Cajas Clemas Gastos de envo Unidades Precio/unidad 1 22 2 0,24 2 0,24 2 0,24 2 0,24 2 0,20 2 0,20 2 0,59 1 0,21 1 12,98 1 10,03 2 1,77 40m 0,16/m 2 2,50 2 0,75 2 1,10 1 8,26 TOTAL Precio total No hay que comprarlo 0,48 0,48 0,48 0,48 0,40 0,40 1,18 No hay que comprarlo 12,98 10,03 3,54 6,40 5 1,5 2,20 8,26 53,81

6.- Esquema del sistema

6.- Esquema del sistema


A continuacin se muestra el esquema con las conexiones del sistema. La ubicacin de los componentes es relativa ya que, por ejemplo, los LEDs irn colocados en la caja de controles, y los sensores de las canastas estarn colocados en las canastas como es lgico.

7.- Modos de juego

7.- Modos de juego


A continuacin vamos a detallar los modos de juego con los que finalmente cuenta nuestro proyecto. Para la eleccin de cada juego se cuenta con un men de inicio. Dependiendo de la opcin elegida los modos de juego son: Opcin 1: Dos jugadores. Sin bonificaciones. Este modo de juego durar 1 minuto, el ganador de este juego ser el jugador que consiga el mximo nmero de canastas en el tiempo indicado. Finalmente se mostrar por el display qu jugador ha ganado.

Opcin 2: Dos jugadores. Con bonificaciones. En este modo de juego, durante 1 minuto, competirn ambos jugadores para ver quien consigue el mximo de puntos. Es similar al juego de la opcin 1, pero contabilizar ms puntos si se encesta con mayor rapidez. La bonificacin se mostrar mediante los LEDs colocados en la parte inferior de la caja.

Opcin 3: Juego del Asno. Es un juego por turnos en el que uno de los jugadores lleva la iniciativa. En principio es el jugador 1 el que tiene la iniciativa, y mientras anote y el rival falle se le suman letras al rival. Para perder la iniciativa debe fallar el jugador que la llevaba y anotar el rival, de esta manera se cambia el jugador que lleva la iniciativa y al que se le aaden letras. El primer jugador que forme la palabra ASNO, con sus cuatro letras, perder el juego.

Opcin 4: Juego del 11. Los jugadores lanzan a canasta mientras anoten tiros seguidos, una vez que fallen un tiro se cambia el turno y lanza el otro jugador hasta que falle. El primer jugador en llegar a 11 puntos gana la partida.

10

8.- Dificultades surgidas

8.- Dificultades surgidas


Una de ellas ha sido la construccin completa de la caja, nos ha sido imposible integrar todo el circuito en su interior. Han sido varios los motivos, el primero de ellos, el pequeo tamao de la caja. El otro, ha sido la rigidez de los cables que impeda su fcil manipulacin y al intentar introducirlos, algunos de ellos se soltaban. Los pulsadores colocados en las canastas han sido otro foco de problemas. En un principio, al pulsar un pulsador sumaba puntos en los dos marcadores, y al mantenerlos presionados continuaba sumando. La solucin que hemos encontrado ha sido poner un delay a los pulsadores de 500 milisegundos. Por otro lado, que los aros no sean rgidos provoca imprecisiones y hace que se detecten canastas que en realidad no se han encestado.

11

9.- Proyectos similares

9.- Proyectos similares


Realmente el nico proyecto similar al nuestro que hemos encontrado es el de la siguiente URL: http://www.youtube.com/watch?v=GDE-cFAk57E ste proyecto tiene una apariencia bastante arcaica y la base del proyecto que es la forma de identificar las canastas no utiliza el mismo sistema que el que vamos a utilizar nosotros, al menos a primera vista. Se podra decir que este proyecto solo alcanza la primera fase del nuestro ya que no dispone de temporizador, ni de una forma de contar las canastas, ni de modos de juego.

12