Ruleta de Casino
Contenidos
- Introducción
- Material Utilizado y Costes
- Pasos Realizados
- Implementación de la Pantalla LCD 1602
- Prueba Individual
- Prueba para la Ruleta
- Implementación del Joystick Analógico
- Prueba Individual
- Prueba para la Ruleta
- Implementación del Infrarrojos FC-51
- Prueba Individual
- Prueba para la Ruleta
- Implementación del ServoMotor
- Prueba Individual
- Prueba para la Ruleta
- Implementación del anillo de LEDs
- Implementación Final
- Implementación de la Pantalla LCD 1602
- Problemas Encontrados
- Código Final
- Video de presentación
- Autores
1. Introducción
Se ha pedido la realización de un proyecto libre mediante una placa electrónica de hardware libre como Arduino Uno. Al principio se mostraban varias opciones como idea principal para el proyecto, pero nuestro grupo se ha decantado por la realización de una ruleta de casino.
Se barajaron distintas formas de realizar el proyecto, no obstante, por distintos problemas explicados posteriormente, decidimos que la idea principal de la práctica sería una ruleta de LEDs.
Para comenzar se diseñaron distintos esquemas realizados a mano sobre el funcionamiento teórico del proyecto, en los cuales se mostrarían los distintos estados o fases que se mostrarían presentes en el diseño final posteriormente.
La idea principal, se basaba en un mecanismo que sea capaz de detectar una moneda y poder mostrar en la pantalla a lo que se quiere apostar.
Para este esquema se planteó la utilización de LEDs individuales que contará con un número. Esta idea fue finalmente descartada debido a la falta de pines digitales.
Y por último se hizo un esquema que muestre todas las posibilidades realizables en una pantalla para apostar por un color o un número.
2. Material Utilizado y Costes
De seguido, en base a los esquemas hechos, previamente, hemos buscado el material necesario para la resolución de las ideas básicas que debíamos implementar. El material utilizado es el siguiente:
Material dado en el Aula | Cantidad | Precio/unidad | Importe |
Placa Arduino UNO R3 | 1 | 19.99€ | 19.99€ |
Placa Protoboard | 1 | 4.96€ | 4.96€ |
Pantalla LCD1602 | 1 | 12.62€ | 12.62€ |
Potenciómetro Lineal | 1 | 0.95€ | 0.95€ |
Joystick Analógico | 1 | 4.99€ | 4.99€ |
Servomotor SG90 | 1 | 1.20€ | 1.20€ |
Cables macho macho | 0.99€ | 0.99€ | |
Cables macho hembra | 0.85€ | 0.85€ | |
Material extra | Cantidad | Precio/unidad | Importe |
Infrarrojos FC-51 | 1 | 1.75€ | 1.75€ |
Anillo de LEDs WS2812 | 1 | 5.99€ | 5.99€ |
Material no utilizado | Cantidad | Precio/unidad | Importe |
Anillo de LEDs WS2812 | 2 | 5.99€ | 11.98€ |
Multiplexor CD74HC4067 | 3 | 2.58€ | 7.74€ |
1 | 1.20€ | 1.20€ | |
Total, Material dado en el Aula | 45.60€ | ||
Total, Material Extra | 7.74€ | ||
Total, Material no utilizado | 20.92€ | ||
Total, Material comprado | 28.66€ | ||
Total, Material Utilizado | 53.34€ | ||
Total, Importe | 74.26€ |
3. Pasos Realizados
A continuación, se mostrarán los distintos pasos que se han seguido tanto en el apartado hardware como en el software para llegar al diseño final.
Implementación de la Pantalla LCD 1602
Para comenzar, se ha tomado la decisión de añadir una pantalla para poder mostrar un menú con opciones seleccionables. Además será necesario añadir una librería llamada “<LiquidCrystal.h>”
La pantalla LCD cuenta con 16 pines de los cuales se utilizan 12, 1 conexión a un potenciómetro que mide el brillo de la pantalla, 3 conexiones al GND, 2 conexiones al voltaje y 6 conexiones digitales, 4, 5, 6, 7, 8 y 9 respectivamente. Por otro lado, el potenciómetro tiene una conexión al GND y otra al voltaje.
Prueba Individual
Para comenzar antes de programar los diferentes menús, se ha debido de probar el funcionamiento individual de la pantalla. Para ello, se ha programado un código que muestre por pantalla un hola mundo.
El código y su resolución es el siguiente:
Prueba para la Ruleta
Tras entender el funcionamiento de la pantalla, hemos comenzado a implementar el menú que es mostrado por pantalla.
Por pantalla se mostrará lo siguiente:
Implementación del Joystick Analógico
La siguiente tarea se basaba en poder encontrar una forma de navegar por el menú. Para ello, decidimos implementar un joystick analógico. Además de añadir los submenús a la pantalla.
El joystick cuenta con 5 pines, 1 conexión digital , 2 conexiones analógicas, 1 conexión al voltaje y 1 conexión al GND.
Prueba Individual
Para comprobar su funcionamiento, primero se ha hecho una prueba con el Serial Monitor del programa software que mostrará un mensaje en base a la acción que realices con el joystick.
Prueba para la Ruleta
Añadiendo el joystick en la pantalla, las conexiones no cambian, destacar que la conexión digital del
joystick es la 2.
La forma de navegar por el menú de la pantalla, sería mediante el joystick, el movimiento del eje x cambiará las distintas opciones seleccionables y al pulsar el joystick se seleccionará y se abrirá un submenú. Al seleccionar a lo que se desea apostar se mostrará un mensaje por pantalla poniendo lo seleccionado.
Su resolución es la siguiente:
Implementación del Infrarrojos FC-51
Como la manera de inicializar todo el proyecto es insertar una moneda de un euro, debemos detectarla de alguna manera, así que decidimos agregar un detector de obstáculos. que sea el responsable de encender la pantalla.
Las conexiones del infrarrojos son una conexión digital, una conexión al GND y una conexión al voltaje.
Prueba Individual
Para probarlo se ha realizado un código sencillo en donde el infrarrojos se encenderá en cuanto detecte un obstáculo.
Las conexiones y el código son las siguientes:
Prueba para la Ruleta
A continuación implementaremos el código mostrado previamente con la pantalla y el joystick, al código de detección de obstáculos del infrarrojo. Es decir, hasta que el infrarrojos no detecte la moneda, el resto del código se ejecutará. Para facilitar esta fase, la pantalla mostrará “Esperando…” hasta que se introduzca la moneda.
Implementación del Servo motor
Por último, para acabar el funcionamiento interno necesitamos que haya una forma de que la moneda no esté para cuando se ejecute por segunda vez la ruleta. La solución más sencilla es aplicar un servomotor que frene la moneda y cuando se seleccione en el menú a qué se quiere apostar, este servo se activará y dejará pasar la moneda.
El servomotor cuenta con una conexión digital, una conexión al GND y otra conexión al voltaje
Prueba Individual
Para comprobar su funcionamiento se ha realizado un código que muestre cómo se mueve el servomotor.
Las conexiones y el código son las siguientes:
Prueba para la Ruleta
A continuación, El código que incluye la pantalla, el joystick y el infrarrojos deberá de ejecutar el servomotor al final se su realización, es decir, cuando se seleccione a lo que se quiere apostar en la pantalla, el servomotor se moverá y dejará caer la moneda y con un retraso de dos segundos volverá a su posición.
No podemos mostrar una imagen, ya que el servo motor fue agregado después de implementar un ultrasonidos, este al ser eliminado del proyecto lo implementamos directamente.
Implementación del círculo de LEDs
Y para finalizar, hemos añadido un círculo de LEDs que se ejecutará cuando se seleccione por pantalla la opción a la que se quiere apostar, el anillo comenzará con todos sus LEDs apagados y se encenderá un LED y comenzará a girar por un tiempo determinado. La casilla que se quede encendida será la que ha salido, y esta se mostrará por pantalla, así como si has ganado o no.
Hay una conexión al GND, otra conexión al voltaje y otra conexión a un pin digital.
Su resolución se muestra tanto en la implementación final como en el código final
Implementación Final
El último paso para acabar el proyecto, era albergar en una caja toda la implementación hardware y, que dentro de la estructura funcione todo el código explicado previamente.
Finalmente para la presentación se decoró y se tematizó
Su resolución es la siguiente:
Problemas Encontrados
Durante la realización del proyecto se han encontrado múltiples problemas:
Para comenzar, la idea principal, no iba a ser una ruleta de LEDs, sino que se quería implementar, al igual que en la vida real, una bola que gire en una circunferencia y que acabase en un número, detectando por un sensor dónde ha caído la bola. Al no tener muy claro cómo íbamos a lanzar la bola y estar escasos de conexiones digitales rápidamente se descartó esta idea.
Otro de nuestros problemas y probablemente el más grave de todos es la falta de conexiones digitales en la placa arduino ya que en vez de un anillo de LEDs, se iba a trabajar con un LED individualmente por cada casilla. Al necesitar tantas conexiones digitales se compraron unos multiplexores para solucionar este problema, no obstante, los multiplexores no funcionaban como se esperaba incluso tras haberlos soldado. Debido a este gran problema se sustituyeron los LEDs individuales por el anillo.
Ligado a lo dicho previamente, se comenzó el proyecto, con la idea de utilizar un ultrasonido, más no se acabó agregando para ahorrar conexiones digitales por medio de un infrarrojos, que tienen una funcionalidad similar, por no decir igual.
Código Final
6. Video de Presentación
https://drive.google.com/file/d/1TL6Po4tXwFMSCIUCW4pXxll9Q65JiGYc/view?usp=drive_link
7. Autores
Gonzalo de la Casa Paredes
Theresa Spuller
Alejandro Olías Núñez