Tabla de contenido:

Juegos Arduino con pantalla LED en línea: 7 pasos (con imágenes)
Juegos Arduino con pantalla LED en línea: 7 pasos (con imágenes)

Video: Juegos Arduino con pantalla LED en línea: 7 pasos (con imágenes)

Video: Juegos Arduino con pantalla LED en línea: 7 pasos (con imágenes)
Video: Curso de Arduino 9: Display LED de 7 Segmentos 2024, Mes de julio
Anonim
Image
Image
Componentes principales
Componentes principales

también conocido como LED Ladder Display Game System.

Un Attiny-85 equipado con hardware y software para jugar juegos de "video" llenos de acción, en una pantalla LED en línea.

Tiene una pantalla de escalera de 12 LED multiplexada y admite hasta 6 botones de entrada y una salida de audio opcional.

Está repleto de 4 juegos de habilidad, con múltiples niveles de dificultad y algunas variaciones (actualizado a 16 juegos, cuando se usa con un ATMega MCU).

[Video]

Paso 1: Componentes principales

Construí mi proyecto de forma modular (dos ensamblajes separados). Un subconjunto de pantalla principal; que se puede utilizar por sí solo de forma independiente. Y un subconjunto de entrada de botón. De esa manera, puedo usar el botón o el ensamblaje de la pantalla nuevamente en otro proyecto. Esto también permite opciones de montaje flexibles.

También llevé la línea de control a un encabezado de clavija para el ensamblaje de la escalera LED para poder utilizar un Arduino Nano (o Uno), para desarrollar software para él, así como para usarlo en otros proyectos. Un Digispark no funcionará debido a los otros componentes en su placa de circuito.

Elegí usar las mismas asignaciones de pines para la escalera de LED que en instrucciones anteriores para que sea más fácil para aquellos que ya tienen una implementación de hardware de este tipo utilizar el software en este instructable, aunque no encontré las asignaciones hechas para la lógica más clara en El software.

Las dos líneas entre los módulos son PB4 y tierra. Como todo lo que hay en el conjunto de múltiples botones son resistencias e interruptores, no depende de la polaridad, y la inversión de la conexión no importa.

Con el apoyo de más botones se puede implementar una mayor variedad de juegos (o aplicaciones). Dos de los juegos de este instructivo se juegan mejor con dos botones. Los cuatro botones principales se pueden utilizar para acceder directamente a un juego asociado. Pronto implementaré un juego que depende del uso de los cuatro botones principales.

Este proyecto utiliza hasta seis botones. Cuatro principales BTN 1-4, estos botones se pueden detectar individualmente incluso cuando se presionan dos de ellos simultáneamente. Los otros dos son botones especiales, primero está el equivalente del botón único en proyectos anteriores que hace una conexión dura entre la entrada PB4 a tierra, llamo a esto BTN0 o ESC ya que este interruptor siempre se puede detectar y bloqueará la detección de cualquiera de los demás. La otra tecla especial es la tecla de función, si se presiona cuando se presiona BTN 0-4, se puede detectar y usar para cambiar la funcionalidad.

En este boceto de juego de habilidad utilizo:

  • FncKey + Btn1 volver al modo de menú
  • FncKey + Btn2 nivel de dificultad avanzado (si está en el nivel más alto, vuelva al nivel más bajo)
  • FncKey + Pausa instantánea Btn4 (presione cualquier tecla para cancelar la pausa)
  • FncKey + Btn 0 o 3 no están definidos.

Paso 2: Lista de piezas

Lista de partes
Lista de partes

Partes requeridas

  • LED, rojo, amarillo, verde y azul como estos
  • Placas de PCB para elementos similares, es posible que deba comprar una placa más grande y cortarla al tamaño deseado.
  • clavija de enchufe de inmersión artículos similares
  • Chip Attiny-85
  • resistentes
  • interruptores de botón utilizados: Botones pulsadores táctiles momentáneos de PCB de 12x12x8 mm y 6x6x6 mm

recomendado:

  • zumbador 5v, tipo activo
  • un palito de helado
  • Tira de cabezal de clavija de 2,54 mm
  • Alambre de calibre 30 y herramienta de envoltura de alambre https://www.ebay.com/itm/351798901037 El enlace anterior es para un cable que es más como 36 ga. Ojalá supiera de ese trato de verdad 30 ga. cable

Paso 3: Aspectos destacados de la construcción

Aspectos destacados de la construcción
Aspectos destacados de la construcción
Aspectos destacados de la construcción
Aspectos destacados de la construcción
Aspectos destacados de la construcción
Aspectos destacados de la construcción
Aspectos destacados de la construcción
Aspectos destacados de la construcción

En el ensamblaje de la placa principal, eléctricamente tengo lo mismo que otros proyectos anteriores de escaleras LED, que es posible que desee consultar para obtener más instrucciones básicas de construcción

Sin embargo, no uso una resistencia de pull up exterior en la entrada analógica A2 (PB4), también uso LED rojo, amarillo, verde y azul, en lugar de un solo color, lo cual es deseable para algunos de los juegos que creé para este hardware..

Aquí están las asignaciones de E / S como se esperaba en los esquemas de software adjuntos:

Proyecto MCU AT-85 Uno / Nano

Nombres nombre pin # nombre de placa --------- ---- ---- --------- Rojo L1-3 PB3 2 D-11 Yel L4-6 PB0 5 D-8 Verde L7-9 PB1 6 D-9 Azul L10-11 PB2 7 D-10 Ain PB4 / A2 3 A-2 Audio PB5 1 D-3

La única diferencia significativa es que tengo dos botones conectados a PB4. El primero va directamente de PB4 a tierra pero sin resistencia de pull up externa (llamo a esto BTN0). También tengo un interruptor de botón (que llamo BTN1) conectado con un 75Kohm en serie a tierra. Esta placa principal se puede utilizar sin la placa de montaje "Botón", pero con algunas funciones limitadas.

Las resistencias de limitación de corriente que van a los conjuntos de LED deben elegirse en función del brillo de los LED de diferentes colores que usa y qué tan brillantes los desea. Terminé con 91 ohmios para el conjunto rojo, 75 amarillo, 430 verde y 150 ohmios para el azul. Estos valores pueden parecer bajos, pero recuerde que los leds están multiplexados (generalmente en mucho <100% del tiempo)

Usé leds de 3 mm y los separé un poco. Tenía las patas del LED a horcajadas sobre un palito de paleta. De esta manera todos resistieron la misma cantidad y por encima de todos los demás componentes. Tengo la intención, en algún momento, de montar la unidad con solo los LED sobresaliendo a través de un marco.

Elegí envolver con cables las interconexiones de los LED. Sin una placa de circuito impreso especial, esto es más fácil de hacer que soldar en lugares estrechos con muchas interconexiones; no suele producir cortocircuitos y es más fácil volver a cablear en caso de error. Con todas las corrientes dentro y alrededor del microcontrolador en los miliamperios, el cable de calibre 30 es suficiente.

Botones y resistencias relacionadas:

Ideé una configuración única (una especie de doble Y) de resistencias y botones, de modo que el software podía distinguir las pulsaciones de botones individuales y dobles (teóricamente se puede identificar cualquier combinación de estos cuatro botones). Probé varias configuraciones con una multitud de valores de resistencia en una hoja de cálculo en busca de la mejor configuración, luego los simulé en el software para que probara todas las combinaciones de resistencia posibles para encontrar el conjunto (que estoy usando) que produciría el máximo de diferencia mínima de lecturas analógicas entre cualquiera y todas las pulsaciones de botones simples y dobles. Los dispuse de modo que Btn1, Btn4 y Btn1 + 4 en particular fueran distintos.

Consulte el Diagrama de la red de botones arriba.

Debe cubrir todo el cableado que se interconecta a PB4 (y posiblemente cambiar contactos y resistencias) con cinta aislante, pegamento caliente u otra cosa que no conduzca en absoluto, ya que una mera resistencia de megaohmios eliminará la capacidad de determinar qué interruptor (es) están presionados; y cualquier contacto de este tipo que haga mientras realiza una asamblea lo haría.

Instructables asociados posteriores:

Juegos de 4 botones con una entrada analógica /

Dual-Power-para-su-micro-controlador-portátil-Proj /

Carcasa-impresa en 3D para consola de pantalla LED en línea y /

Paso 4: Más opciones y notas

Más opciones y notas
Más opciones y notas

Salida de audio opcional

La salida de audio opcional usa PB5. Conecté un zumbador de 5v, en serie con un resistor de 150 ohmios para limitar su molesta salida de otro modo ruidosa. Te recomiendo que uses 50-200 Ohm. Se podría poner en paralelo el zumbador con una tapa (2-10 uf) para hacerlo menos áspero, o utilizar un altavoz de 32 ohmios con controlador de 10 mm extraído de un juego de auriculares estéreo baratos, en lugar del resistor y el zumbador. Me gusta, por los sonidos del juego, mejor como lo tengo.

Por defecto, el Attiny-85 usa PB5 como reinicio, efectivo significa que el audio funcionaría pero no tendrá un efecto negativo en ninguna otra operación. Cuando se usa un Nano o Uno, el audio funcionará (saldrá su D3). Para obtener audio con Attiny, tendrá que cambiar la configuración de los pines internos para que el software pueda usar PB5 como salida. Hay ramificaciones significativas al hacer esto; por favor refiérase a estos:

forum.arduino.cc/index.php?topic=178971.0

www.instructables.com/id/Simple-and-cheap-F…

y

Generalmente, durante el juego, un error o falla provocará un chirrido o un sonido corto de frambuesa. Hay una melodía de felicitación cuando completas un nivel o ganas, como en el ping-pong. Encuentro que tener un audio de acompañamiento realmente aumenta la alegría de jugar.

Botones de tipo de controlador de juego alternativo

Para mis nietos, que son duros con el equipo, hice botones separados duraderos, Btn1 y Btn4, en el extremo de cables conductores largos. Ver foto. Monté los botones en empuñaduras de cribado; con 75Kohm en línea con Btn1 y ~ 37Kohm en línea con Btn4. En serie con Btn4 utilicé un 36K, un 33K o incluso posiblemente un 39K. Con los botones de émbolo externos en mente, sería una buena idea tener un juego separado de pines de cabezal para conectar botones externos de mano que se ven como Btn1 y Btn4.

Se necesita una fuente de alimentación de calidad

Para una fuente de alimentación, puede usar la salida USB 5v de una PC, tableta, cargador de pared, un banco de energía o una batería de 3,7 Li directamente.

Descubrí que al alimentar la unidad con algunos cargadores USB y varios bancos de energía USB, noté parpadeos y fallas ocasionales e incluso se reinicia. Si experimenta esto, busque una fuente de alimentación con una mejor regulación; de lo contrario, agregar un condensador grande (100-1000 uf) a través de + V a tierra puede ayudar.

Pruebas

También he incluido un programa de prueba para ayudar a validar y depurar su hardware. El código es un trabajo en progreso y es muy necesario limpiarlo. Espero llegar a eso, pero mientras tanto, debería satisfacer sus necesidades. Recientemente solo lo he usado con un Nano que maneja los ensambles de pantalla y teclado. Puede utilizar casi cualquier botón para seleccionar elementos del modo de menú. Para salir de una demostración / prueba nuevamente, presione la mayoría de los botones. Para salir de la prueba del botón (# 4) presione FncKey + Btn1 o mantenga presionada la tecla Esc (conexión a tierra PB4), o recicle la energía.

Debido a las diferencias en las resistencias internas de la MCU y las tolerancias de las resistencias, es posible que deba hacer algunos ajustes para que todas las pulsaciones de botones simples y dobles se detecten correctamente. Para hacer esto, use la prueba-4 (para seleccionar esto, consulte la descripción de la operación del menú a continuación) del programa de prueba. Tenga en cuenta que no utilicé una resistencia de pull-up externa ya que he planificado usos adicionales para la entrada PB4 que son incompatibles con cualquier pull-up.

Paso 5: descripción general del software

El sketch LadderGames.ino implementa cuatro juegos, incluidas algunas versiones alternativas.

El boceto se puede descargar y ejecutar desde un ATtiny-85, Nano, Uno, etc. Para programarlo en un chip Attiny, consulte: https://www.instructables.com/id/Program-an-ATtiny… y / o para programar su chip ATtiny-85:

Cambie el reloj interno del ATtiny85 a 8MHz, ya que el rendimiento es el deseado para el juego. Referir:

forum.arduino.cc/index.php?topic=276606.0

Este boceto debe ser compatible con versiones anteriores de la mayoría de los proyectos de escalera LED ATtiny-85 anteriores, sin cambios, pero tendrá algunas funciones limitadas.

Operación del menú

Al inicio, hay una verificación de estado en forma de barrido a través de los LED y una serie de pitidos. Luego entra en el modo de menú principal. Cada conjunto de LED de un color se enciende durante un par de segundos seguidos. Un juego se selecciona presionando un botón mientras un conjunto asociado está encendido, juego 1: rojo, juego 2: amarillo, juego 3: verde, juego 4: azul. En el modo de menú, se puede presionar Btn2, Btn3, Btn4 para ir directamente a los juegos 2, 3, 4 respectivamente. Una vez que se ha seleccionado un juego, deberá indicar la variación que desea. Para cada variación disponible parpadeará un conjunto de leds de colores. Simplemente presione un botón en el que desee. Las variaciones, "versiones", de cada juego se describen con más detalle a continuación.

La versión uno de los cuatro juegos se puede jugar con un solo botón. O uno conectado entre PB4 y tierra (Btn-0) como en los instructables de escalera LED anteriores, o con un interruptor que conecta una carga de 75k a tierra (Btn-1). Cualquiera de estos servirá en juegos cuando las instrucciones hablen de presionar un botón no específico.

Para salir de cualquier juego, puede usar FncKey + Btn1, mantenga presionada la tecla EscKey (también conocida como: Btn0) durante 1-2 segundos o apague y encienda.

Paso 6: Juego

Juego 1: Push-It

Esta es una adaptación de mi juego 'Push-It' de uno de mis primeros instructables

www.instructables.com/id/Play-a-Game-with-a…

El objetivo del juego es aumentar el número de parpadeos y el número de LED encendidos al máximo posible. Push-It comienza con una serie de destellos, que luego se repetirán. Si presiona el botón después del último destello de la serie y cuando potencialmente exista uno adicional, el siguiente LED se encenderá y el conteo de destellos aumentará en uno. Pero si 'presiona' antes o después del período de tiempo de un posible destello adicional, se reducirá la cantidad de destellos en el conjunto.

Cada vez que logras aumentar el conteo de destellos, el nivel de dificultad aumenta a medida que el tiempo se acelera un poco, lo que hace que sea cada vez más difícil llegar a conteos de destellos más altos.

El número de conteo actual se almacena en la memoria EEPROM para reiniciar al mismo nivel más tarde.

Juego 2: Ping-Pong

Genial (aunque el único) juego competitivo para dos jugadores aquí; donde la pelota (un solo destello de luz) va de un lado a otro, cada vez más rápido, cada vez que recibe un "golpe".

Implementé por primera vez este juego de una sola fila de luces en las luces de los botones del panel frontal de una supermini computadora aeroespacial en la década de 1970.

Para golpear la pelota hacia adelante y hacia atrás, la paleta correspondiente debe golpearla (botón presionado) cuando está en la posición final (último LED). El primer lado en fallar pierde, y las luces del lado ganador parpadean.

Hay dos variaciones, una que requiere solo un botón (Btn 0 o 1), que golpeará la pelota en cada extremo; y una segunda versión, es para dos personas cara a cara, que requiere dos botones; el botón 1 en el lado izquierdo y el botón 4 o 0 en el otro. Se prefiere el uso de los botones 1 y 4, ya que no interferirán entre sí; cada uno puede ser golpeado para devolver la pelota desde su extremo sin importar el estado del otro botón.

El ganador de un rally es siempre el servidor del siguiente.

Juego 3: Galería de tiro

Dispara a todos los objetivos (luces) para completar un nivel. En cada nivel superior la acción es más rápida.

Hay dos versiones; uno donde el sitio está fijo y los objetivos se mueven y otro donde el sitio se mueve y los objetivos están quietos. En cada caso, un impacto apaga la luz de un objetivo; y un error hace que aparezca un objetivo. Cuando un objetivo está a la vista, la vista se ilumina más brillante, de lo contrario, es tenue.

En la versión uno, la vista comienza a la izquierda (abajo) y escanea a la derecha. En la versión 2, la mira se fija en el medio mientras que el objetivo se mueve de derecha a izquierda. Al mirar el código, hay versiones fantasmales 3 y 4 que podrían activarse, pero usted pone su propio bienestar bajo su propio riesgo.

Juego 4: JumpMan

La idea es que estés atravesando un nivel de juego en el que aparecen objetos sobre los que tienes que saltar, a medida que avanzas, llegan más rápido. En otra versión del juego también hay objetos elevados por los que tienes que agacharte.

En la versión uno solo hay objetos para saltar. Para saltar debes presionar el botón cuando el objeto llegue a la última celda de la izquierda; que se ilumina cuando esto ocurre. Para saltar 2 o más objetos consecutivos tienes que saltar (presionar) sobre el primero y mantener presionado el botón para el resto.

En la versión 2 se agregan objetos sobre la cabeza (intermitentes). Aquellos se saltan 'saltando durante la celda anterior y se sueltan mientras está en la celda final. Solo un techo puede parpadear a la vez, por lo que una vez que uno haya pasado, es posible que vea otro (que antes no parpadeaba) desnudo sobre usted. Nunca habrá sobrecargas consecutivas, pero pueden estar adyacentes a uno o más objetos de salto (tipo roca).

En la versión 3 del juego debes usar un botón separado para los objetos de arriba (Btn-2, 4 o 0 a tu elección); los saltos requieren Btn-1.

Una vez que haya superado cuatro objetos más de los que falló, avanzará de nivel; hay una felicitación de audio y visual, luego una reanudación a una velocidad más alta. Pasar por un conjunto de objetos consecutivos cuenta lo mismo que un objeto individual.

Te aconsejo que imprimas las reglas de funcionamiento de los juegos y las vuelvas a leer antes de jugar a un juego que no hayas jugado recientemente. De lo contrario, puede frustrarse; pensar que el juego no está funcionando correctamente cuando de hecho lo está, pero tú y el juego tenéis diferentes formas y expectativas. Yo mismo he sido víctima de esto más de un par de veces.

Paso 7: actualizaciones, más juegos

Image
Image

Hice una carcasa de consola impresa en 3D para albergar la pantalla de escalera LED en línea y los botones.

He ideado más juegos que utilizan este hardware. Échales un vistazo y diviértete:

Nuevos juegos de 'Whack a Mole' a 'Tug of War'

Diciembre de 2016. Ahora, al final del enlace anterior, hay una versión unificada del código que incluye los 12 juegos.

17 de febrero de 2017: aquí está el último juego establecido para este proyecto, ahora con 16 juegos (boceto a continuación). Esto se ejecutará en cualquier implementación de MCU con 32 KBytes de memoria de programa flash. Aunque cualquiera de 3 o 4 de los 16 juegos se puede poner en un ATtiny. Recomiendo usar los arduinos Nano 3. Los últimos 4 juegos agregados son las carreras de 'Le Mans', el concurso de pintura en aerosol cabeza a cabeza 'Spray', el tiro aro de baloncesto 'PIG', y el juego de preguntas de operaciones binarias 'BiFunc'.

Con un juego mayor y más diverso de estos juegos, las mejoras en sus habilidades de juego, el disfrute para todos los jugadores de nivel, es posible. Creo que hay mucho margen de mejora en las carreras de Le Mans a través del diseño de la pista y la sincronización del juego.

Tengo, por escrito, alrededor de 10 actividades / juegos / funciones más, algunas de las cuales espero poner a disposición alrededor del otoño de 2017.

Además, estos juegos de una línea se pueden modificar para una pantalla LCD de 2 líneas 2x16, con una línea de objetos de juego y otra para algo de texto. He hecho un poco de esto, pero, como estoy respaldado por proyectos, hasta donde puedo ver, no sé cuándo o si lo conseguiría. Entonces, si alguien está motivado para adoptar y optimizar estos juegos para una pantalla LCD de 2x16, por favor compártalos conmigo y con los demás.

Además de los 4 nuevos juegos aquí en Menu_16Games.ino, he adjuntado mi proyecto y he creado instructivos relacionados: Consola de juegos LED en línea Carcasa y alimentación de su proyecto de MCU portátil

Espero que muchos se tomen el tiempo y… DISFRUTA de estos juegos.

Juego de grupo: 1– Rojo 2- Amarillo 3 - Verde 4 - Azul

1 rojo PushIt PingPong ShootEmUp JumpMan 2 Yel QuickDraw Tug_a_War Chicken Hot_Hands 3 Grn Le_Mans Spray PIG BiFunc 4 Blu SimonSays Whack_Mole Sea_Hunt Flip_d

2 de septiembre de 2017: Capacidad de trabajo mejorada con botones de joystick externos viejos, sucios y ruidosos, en el juego de cabeza a cabeza (grupo 2).

13 de diciembre de 2017: manejo mejorado del rebote del botón y ajuste de la medición, solución de problemas menores. Intenté usar un condensador en la línea de entrada analógica del botón, pero para ser efectivo resultó en un ajuste lento de la medición que produjo identificaciones de nivel falsas o que el software esperó tanto esa acción rápida del juego se vio comprometida.

Abril de 2018: Descubrí que los acopladores de compresión de 5/8 son excelentes cuerpos para botones de estilo de émbolo externo. Como a mis hijos les gusta usar un par de estos, agregué pines de encabezado para conectar fácilmente dos de ellos (como Btn1 y Btn4).

Tenga en cuenta que creé otro proyecto, en octubre pasado, que se basa en el hardware de este instructable. Tiene el espíritu de Halloween y puede ser muy divertido, especialmente para los niños. Instructable: Dispositivos influenciados por la psique fantasmal

Recomendado: