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

PUBLICIDAD



Por @Alvy — 26 de Febrero de 2021

En el canal de YouTube de ZenoTheRogue hay algunos ejemplos de portales de nudos, una idea que comentamos el otro día en una versión ligeramente diferente de Bill Thruston. Recuerdan un poco a los viajes fractales, solo que aquí las estructuras están más definidas pero no por ello tienen una aperiencia menos infinita y enredada.

La segunda versión mejora la primera con reflejos en las paredes, un coloreado sin algunos de los bugs de la primera y mejor resolución. La verdad es que el viaje geométrico resulta bastante interesante, especialmente si lo miras con unas gafas inmersivas… O arrimando mucho el careto a la pantalla dejando la habitación a oscuras.

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear

PUBLICIDAD



Por @Alvy — 26 de Febrero de 2021

Map of my personal data infrastructure | beepb00p

@Karlicoss está llevando a cabo un interesante ejercicio que puede resultar en principio un tanto extraño, pero que tiene mucho sentido: trazar un mapa de su infraestructura de datos personales. Y es que hay gente peculiar a la que le gusta recolectar obsesivamente todos sus datos digitales: a qué tuits contesta, a qué publicaciones de Facebook le da «me gusta», qué fotos comparte en Instagram, sus mensajes de WhatsApp y Telegram, etcétera. Almacenando todo esa información se tendría una especie de copia de toda la vida digital del individuo, que hoy en día supone un buen porcentaje de la VidaReal™.

Aunque esto puede resultar un tanto chocante en una época en la que también se lucha por la privacidad y salvaguardar los datos personales, hay gente a la que esto le da un poco igual. O que considera que puede recopilar toda esa información sobre sí mismos y guardarla a buen recaudo. Sea como sea, Karlicoss está de momento recopilando las fuentes de datos y la forma de acceder a ellas para luego archivarlas e interactuar cuando le apetezca.

Con su proyecto se aprenden cosas sobre liberación de datos, lo efímeros que son los contenidos de las redes sociales (que muchas veces desparecen) y cómo funcionan las API (interfaces de programación) de los diversos servicios, desde Telegram a Discord, Google, Instapaper o Reddit.

Sabemos de gente como Stephen Wolfram que le dedica parte de su tiempo tanto a la captura como al análisis de esos datos. Es algo que tampoco es nuevo: encaja con el concepto del «yo cuantificado» que a mediados de los 2000 se popularizó con los gadgets como los smartphones, las pulseras medidoras de actividad y la llegada de las redes sociales. A Chris Anderson, de hecho, la pareció una idea fallida y es que parte del problema, como ha comprobado Karlicoss, es que cada sistema es «de su padre y de su madre» y no hay una plataforma común que unifique y facilite las cosas. Todo se andará.

Relacionado:

Compartir en Flipboard Compartir en Facebook Tuitear

PUBLICIDAD



Por @Alvy — 26 de Febrero de 2021

Spot

Es un poco distópico que haya que explicar estas cosas, pero a veces es difícil distinguir entre un episodio de Black Mirror y el MundoReal™. En este caso tenemos el humor (¿o no?) de @LenKusov que nos ha dejado unas perlas de sabiduría acerca de cómo protegerse si te ataca un robot Spot. Sí, uno de esos robots inquietantes de Boston Dynamics con aspecto de perrito, que a tanta gente les da repelús.

Los consejos están sacados de los propios manuales de operación de Spot y supuestamente son por si hay una «situación de emergencia», pero claro… También vendrían bien como técnicas de guerrilla si los Spots se rebelan, o si alguien los está operando con fines malévolos, que nunca se sabe.

El primer consejo para enfrentarse a un Spot es agarrar la palanca de la batería y tirar de ella. No es fácil: hay que buscar el momento y meterle mano por debajo, en lo que sería «la tripa», que es donde está la palanca. Sin batería el robot se queda sin energía y fin del problema.

Spot

PERO hay que tener mucho cuidado para no meter los dedos en las juntas de las patas (lo que serían las caderas y las rodillas) porque ahí no hay sensores de seguridad y directamente te destrozarían la mano si la metes cuando las patas se están moviendo. ¡Cuidadín!

Spot

Otra fórmula es pulsar el botón rojo que está junto al botón de encendido/apagado; pero curiosamente no el propio botón de apagado on/off. Eso activa el modo lockout que deja bloqueado al robot (se supone que está encendido).

Otras cosas que Kusov recomienda para proteger tu vida y la de los demás en caso de emergencia o insurrección robótica son:

  • Ponerle trampas (caerá fácilmente en ellas).
  • Dispararle al centro de masa (la batería de litio no está protegida).
  • Tapar las cámaras 360. Las cámaras están en la «cabeza» y se puede utilizar casi cualquier cosa: pintura, polvo, arena, trapos, mantas o cinta adhesiva.
  • Confundir los sensores LIDAR (radar); están en los railes superiores.
  • Interceptar/bloquear el wifi con cualquier gadget apropiado.

Aunque en teoría los robots Spot no están «diseñados para el mal» y de hecho hoy en día casi podrías acariciar uno de ellos porque «no hacen nada» se ve que ya hay gente preparándose para la batalla humanos vs. robots.

El caso es que en últimos días también se ha sabido que han armado a un Spot con una ametralladora, aunque de pintura (paint-ball) y la gente que echa mano de la imaginación para cualquier situación ya lo imagina armado con una ametralladora y balas de verdad. ¡Glups!

También se ha visto a una unidad patrullando las calles de Nueva York. Ese Spot convertido en DigiDog va acompañado de operarios, pero de ahí a que apatrulle él solo la ciudad no queda mucho. De hecho en el calor de la crítica antidistópica y antipolicial, a modo casi preventivo, los dominios de internet RobotWarDogs.com y RobotWarDogs.org «Perros de la Guerra Robóticos» han sido reservados y «convenientemente redirigidos» a Boston Dynamics (cortesía de Jason Scott).

Compartir en Flipboard Compartir en Facebook Tuitear

PUBLICIDAD




PUBLICIDAD


Desarrolla más rápido con Xojo