26 de Febrero de 2021

Iván nos escribió para contarnos que había construido un Pong para Arduino Uno, al que ha llamado cariñosamente PongDuino. Nos envió un vídeo del prototipo y unos días después toda información y enlaces. Lo hemos editado con su colaboración para publicarlo en forma de breve tutorial. Resulta tan entretenido como didáctico, un estupendo proyecto para cualquier tarde aburrida.

PongDuino: Pong para Arduino

Por Iván Cerra

Este proyecto consiste en recrear el arcade Pong de Atari (1972) para el microcontrolador de 8 bits Arduino. Se ha intentado respetar la recreativa original en todo momento, tanto los sonidos como los gráficos y la dinámica del juego.

Materiales

Esta es la lista de componentes necesarios, junto a un valor aproximado de su precio y una breve descripción de su utilidad. Como se puede observar este proyecto es de muy bajo coste (~15 euros) dependiendo de dónde se compren los componentes. Se pueden encontrar en tiendas de electrónica y también en Amazon y AliExpress.

  • Arduino Uno – Placa microcontroladora encargada del funcionamiento del juego. (5-10€)
  • Protoboard – Placa de prototipado de conexiones simples sin soldadura. (2-5€)
  • Cables – Cables macho-macho, macho-hembra, hembra- hembra para conexiones sin soldadura. (3€)
  • Potenciómetro Lineal (10 KΩ) – Resistencia variable que se ajusta con un dial. Limitan el paso de corriente eléctrica. Tipo lineal para que el control se comporte uniformemente en todo su espectro. (1€)
  • Botón – Micro interruptor, permite el paso de corriente eléctrica. Circuito cerrado, circuito abierto. (1€)
  • Resistencia (1 KΩ) – Controla el paso de corriente eléctrica para evitar cortocircuitos. En este caso va unida al botón. (0,50€)
  • Buzzer Pasivo – Altavoz que permite convertir una señal electriza en una onda de sonido. (0,50€)
  • TFT SPI 1.8" AZDelivery – Pantalla TFT de 1,8" con controlador ST7735 y resolución 128x160 píxeles. (4-8€ en Amazon)

Conexiones de los componentes

PongDuino

Una imagen vale más que mil palabras: el diseño y conectividad de los componentes sobre la protoboard [en el PDF hay otra equivalente para la versión para dos jugadores]. Hay que tener especial cuidado con la conexión en la protoboard ya que si no se conoce su conectividad se puede provocar fácilmente un cortocircuito (En especial cuidado con la conexión del botón). [En las protoboards las líneas de alimentación están conectadas en horizontal, normalmente marcadas con líneas rojas y azules, + y - mientras que las de conexión de componentes están en columnas marcadas con letras: A-B-C… Eso quiere decir que A-B-C-D-E está conectadas.]

Programación

Tanto el código como la electrónica se han diseñado con fines didácticos; no se ha buscado la eficiencia. Simplemente se ha intentado hacer algo fácil de entender. (Siempre he pensado que «el mejor maestro no es el que más sabe, sino el que mejor enseña lo que sabe.»)

Antes de descargar el código de PongDuino de Github hay que tener instalado el entorno de desarrollo (IDE) de Arduino. Es software libre de muy sencilla utilización.

Una vez descargado el IDE de Arduino hay que descargar las librerías necesarias para la controladora de TFT. El PongDuino utiliza un ST7735 (si se usa una pantalla TFT distinta a la de la SPI 1.8” AZDelivery habrá que descargar otras librerías y realizar otras conexiones). Para la TFT SPI 1.8" las librerías necesarias han sido:

  • Adafruit ST7735 and ST7789 Version 1.6.0
  • Adafruit GFX Version 1.10.5
  • Adafruit BusIO Version 1.7.2

El código del juego está creado tanto para un jugador como para dos jugadores. Si no se quiere añadir un segundo potenciómetro y botón se puede simplemente ignorar esa opción; el código seguirá funcionando. Adaptarlo a otras resoluciones distintas de TFT es bastante sencillo.

En la zona de macros hay una lista de interruptores DIP (switches) por si se quieren modificar parámetros como la velocidad de juego, la IA de la máquina o el número de puntos por partido. Quienes vengan de los 8-bits y los pokes verán que esto es más fácil aquí. En aquel entonces hacer pokes era la forma de cambiar estos parámetros ;-)

IA de la máquina

La «inteligencia artificial» (IA) de PongDuino es muy simple: la pala se dirige siempre hacia la pelota, pero no puede exceder una velocidad y conforme avanza el partido se cansa y ya no llega con tanta rapidez. Así que para ganar hay que hacer peloteos largos… pero cuanto mas largo es el peloteo, más rápida irá la pelota.

Como sugerencias para programar nuevas IAs:

  • Que la pala de la máquina sólo se mueva cuando la pelota cruza la red.
  • Que la máquina juegue en función de nuestra posición.
  • Un largo etcétera… Reservado a la creatividad de cada cual.

Pala de 8 segmentos

PongDuino - Pala de 8 segmentosUna de las características de este juego y que permitió una gran jugabilidad en su momento fue incorporar un sistema de rebote de la pelota en función del punto que golpeaba en la pala. Una genialidad de Allan Alcorn. Eran los comienzos de los videojuegos y ante la falta de potencia hardware y recursos gráficos había que recurrir a ideas como esta.

En este diagrama se puede ver el comportamiento. La pala se dividía en 8 segmentos y cada zona provocaba un ángulo de rebote.

Dígitos de puntuación

PongDuino - Dígitos de puntuación

En una zona del código se realiza la definición de los dígitos de puntuación del juego, os pongo un esquema de su forma.

Cabinet

PongDuino - Cabinet

Lo ideal para terminar este proyecto sería crear un cabinet para alojar los componentes y darle un aspecto profesional. Hoy en día con las impresoras 3D y los vinilos es bastante sencillo. Yo me haré una de marquetería a ver que tal queda.

Próximo proyecto

Crear PongDuino ha sido un proyecto breve pero muy divertido. Esto de programar casi como en la vieja escuela tiene mucho encanto. El próximo proyecto puede ser un Asteroids, un BreakOut, un Tetris… El mayor problema son las restricciones de memoria para hacer cosas más serias, pero es algo que se puede resolver con imaginación. A disfrutarlo… ¡es tan divertido crearlo como jugarlo!

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear
Por @Wicho — 7 de Enero de 2021

Un grupo de ingenieros de la NASA que en el MundoReal™ trabajan en el equipo de la Estacion Espacial Internacional (EEI) ha diseñado ISS Mimic, un modelo de ella que se puede imprimir en 3D y animar mediante Arduino y unos motores; una Raspberry Pi se encarga de descargar los datos de telemetría de la Estación y de pasárselos al Arduino para encargarse de los movimientos para que reflejen siempre los de la Estación real.

Está a escala 1:100 y cuenta con doce motores. Diez de ellos mueven los paneles solares y dos mueven los radiadores. Unos ledes indican el nivel de carga de las baterías de la Estación. Tanto los paneles como los radiadores se mueven continuamente para optimizar su funcionamiento, aunque a lo largo de los 90 minutos de cada órbita pueden hacerlo demasiado despacio para que el modelo sea atractivo. Por eso tiene un modo de funcionamiento rápido en el que reproduce en 90 segundos la órbita anterior y sus correspondientes movimientos de paneles y radiadores. Una pantalla táctil permite controlar el funcionamiento del modelo y ver detalles de los sistemas de la Estación.

También es posible montar sólo el software y manejarlo con el ratón para ver en tiempo real esos detalles.

La idea del equipo es acercar la Estación a la gente y que no sea algo totalmente abstracto que está en el espacio o cuya existencia simplemente se desconoce. En Meet team behind the mini Raspberry Pi–powered ISS hay un artículo sobre ellos.

Aparte de quien se lo quiera montar en casa puede ser un proyecto la mar de interesante para asignaturas de tecnología y similares y para proyectos involucrados en enganchar al estudiantado en STEM y STEAM.

Relacionado,

Compartir en Flipboard Compartir en Facebook Tuitear
Por @Alvy — 31 de Diciembre de 2020

Draftback

Existe una extensión de Chrome llamada Draftback creada por James Somers, un desarrollador que sintió curiosidad por el funcionamiento de Google Docs allá por 2014. Si se instala en el navegador al abrir cualquier documento de Google Docs aparece como un botón en la parte superior. Con un clic analiza el documento y recupera de la nube de Google toda la secuencia de teclas que lo generó: letras, retornos, borrados y también los comandos de edición y formato…

Draftback_buttonLa visualización se puede pausar, acelerar o ver a velocidad real. La pulsación de cada tecla está guardada y se puede reproducir con precisión de microsegundos. Ver a Google Docs teclear algo que se escribió hace años con tal precisión resulta un poco inquietante, todo hay que decirlo (funciona con documentos desde mayo de 2010, más o menos). Si bien es cierto que casi todo el mundo sabe que la aplicación guarda las revisiones de los documentos, como la Wikipedia, casi nadie imagina que lo hace con tamaña precisión.

El trabajo de investigación y recuperación de esos datos es una auténtica genialidad y Somers lo explica con todo detalle en un artículo que publicó en 2014: How I reverse engineered Google Docs to play back any document’s keystrokes. Muy interesante para quienes gusten de hacer «ingeniería inversa» a todo tipo de software y hardware.

Draftback además puede mostrar unos pequeños gráficos estadísticos analizando el documento: cuándo se estuvo tecleando más o menos texto, cuál fue la actividad en diversas zonas del documento a medida que transcurrió el tiempo y demás. Examinar lo sucedido permite recuperar texto que de descartó, ver dónde se hicieron pausas –probablemente para leer o consultar otros documentos– y examinar en general cómo evolucionó el documento. Como dice su autor, «no es un simple vídeo, es una historia completa viva de cada letra del documento».

Esta misma técnica existe en otras aplicaciones como Etherpad y puede utilizarse para examinar cómo la gente escribe código de programación o para el trabajo en grupo. Aunque pueda parecer que se guardan cantidades masivas de información extra en las revisiones, Etherpad y Google Docs guardan simplemente los cambios temporales de un momento a otro, lo cual reduce bastante el espacio necesario.

Compartir en Flipboard Compartir en Facebook Tuitear
Por @Alvy — 10 de Diciembre de 2020

Matthias Wandel es un hacker de la madera y los mecanismos ingeniosos que construyó hace tiempo esta escalera mecánica de madera de forma totalmente artesanal. Está pensada para que un simpático Slinky pueda recorrer sus escalones. Si se hace con habilidad y precisión se convierte de hecho en una especie de escalera infinita para slinkis.

En el vídeo se puede ver cómo Wandel utiliza sus herramientas para cortar pacientemente la madera y construir escalón a escalón esta peculiar escalera mecánica, lo cual incluye algún pequeño fracaso, pero nada irreparable. Al convertirla en cinta transportadora mediante unos tambores apropiadamente cuadrados el invento va tomando forma. Los escalones tienen tamaño suficiente para que el Slinky pueda desplegarse, «saltar» y replegarse sin problema.

El reto final a superar es ajustar la velocidad: si la escalera va demasiado rápida, el Slinky bajará lentamente y acabará saliéndose por la parte más alta. Si va demasiado despacio, el Slinky no se recuperará a tiempo sino que bajará hasta llegar al suelo… y otro triste final. Utilizando como motor una taladradora eléctrica los resultados son… variables cuando menos.

La solución es tan ingeniosa como manual: reemplazar la taladradora eléctrica por una manivela manual. Un ser humano dándole-al-manubrio resulta un generador de movimiento bastante preciso y ajustable según las condiciones, y el Slinky no tiene problemas en mantenerse en la misma posición relativa mientras se va girando la cinta. Problema resuelto.

(Vía Tech Times.)

Otros ingeniosos mecanismos de Matthias Wandel:

Compartir en Flipboard Compartir en Facebook Tuitear

PUBLICIDAD

Desarrolla más rápido con Xojo