Ruede con estilo con este troquel electrónico DIY D20

Ruede con estilo con este troquel electrónico DIY D20

¿Quieres algo un poco único para tu próximo juego de rol de mesa? ¿Qué tal un D20 electrónico con gráficos personalizados para golpes y errores críticos? Hoy te mostraré cómo construir el tuyo propio con un Arduino y algunas partes simples.





No se preocupe si nunca antes ha usado un Arduino, tenemos un guía de inicio .





Plan de construcción

Este es un proyecto simple. Un Arduino impulsará una pantalla OLED y un botón lanzará el dado. Se mostrarán gráficos personalizados para las tiradas de golpes críticos o fallidos críticos. Puede modificar fácilmente el código para que sea D8, D10 o D12.





Que necesitas

  • 1 x Arduino
  • 1 x 0.96' Pantalla OLED I2C
  • 1 x pulsador
  • 1 x 10k? Resistor
  • 1 x tablero
  • Cables de conexión surtidos
  • Código completo aquí, si no desea seguir todas las instrucciones escritas.

Esas son las piezas principales que necesita para construir su propia D20. Es posible que desee instalarlo en una carcasa (que se explica a continuación) y soldar el circuito en un estado más permanente. Aquí están las partes adicionales que necesitará para hacer eso:

  • 4 tornillos M2 x 10 mm (0,4 pulgadas)
  • 4 x tuercas M2
  • Arandelas de 4 x 7 mm (0,28 pulgadas)
  • Broche de batería de 9V (o alternativa adecuada)
  • Tubos termorretráctiles surtidos

Estas pantallas OLED son geniales. Por lo general, se pueden comprar en blanco, azul, amarillo o una mezcla de los tres. He comprado uno en azul, a juego con mi funda. Asegúrate de obtener un I2C modelo en lugar de SPI .



Casi cualquier Arduino será adecuado. He elegido un Nano, ya que son lo suficientemente pequeños como para caber en el estuche. Consulte nuestra guía de compra para obtener más información sobre los modelos Arduino.

El circuito

Aquí está el circuito que necesita:





Conectar VCC y GND en la pantalla OLED al Arduino + 5V y suelo . Conectar analógico 4 en el Arduino al pin etiquetado SDA . Conectar analógico 5 al SCL alfiler. Estos pines contienen los circuitos necesarios para controlar la pantalla mediante el bus I2C. Los pines exactos variarán según el modelo, pero A4 y A5 se utilizan en Nano y Uno. Comprobar el Documentación de la biblioteca de cables para su modelo si no está usando un Uno o Nano.

Conecte la batería a tierra y el VINO alfiler. Esto significa voltaje de entrada y acepta una variedad de diferentes voltajes de CC, pero primero verifique su modelo específico, y a veces puede variar ligeramente.





Conecte el botón a digital pin 2 . ¿Observa cómo los 10k? La resistencia está conectada a tierra. ¡Esto es muy importante! Esto se conoce como resistencia desplegable y evita que Arduino detecte datos falsos o interferencias al presionar un botón. También sirve para proteger el tablero. Si no se usa esta resistencia, + 5V irían directamente a tierra. Esto se conoce como cortocircuito y es una forma fácil de matar un Arduino.

Si está soldando este circuito, proteja sus conexiones con tubos termorretráctiles:

Asegúrate de no calentarlo demasiado y solo hazlo una vez que estés seguro de que el circuito funciona. Es posible que también desee trenzar los cables en pares. Esto los mantiene limpios y ayuda a protegerlos del estrés indebido:

Prueba de botón

Ahora que ha construido el circuito, cargue este código de prueba (asegúrese de seleccionar la placa y el puerto correctos del Herramientas> Tablero y Herramientas> Puerto menús):

|_+_|

Una vez cargado, mantenga el Arduino conectado a través de USB y abra el monitor en serie ( Arriba a la derecha> Monitor en serie ). Deberías ver las palabras Funciona aparecer cada vez que presione el botón.

Si no pasa nada, vaya y vuelva a comprobar su circuito.

Configuración OLED

Necesita instalar dos bibliotecas para controlar la pantalla. Descargar el Adafruit_SSD1306 y las bibliotecas Adafruit-GFX [Ya no están disponibles] de Github, y guárdelas en la carpeta de su biblioteca. Si no está seguro de dónde están las carpetas de su biblioteca, lea mi tutorial de juegos retro, donde configuro esta misma pantalla con más detalle.

Reinicie su Arduino IDE y cargue un boceto de prueba desde el Archivo> Ejemplos menú. Seleccione Adafruit SSD1306 y luego ssd1306_128x64_i2c . Cargue este código (llevará un tiempo) y debería ver muchas formas y patrones en la pantalla:

Si no pasa nada, vuelva a verificar sus conexiones. Si, después de comprobarlo, sigue sin funcionar, deberá modificar el código de muestra.

cómo emparejar airpods a android

Cambie esta línea (al comienzo de la configuración función):

|_+_|

A esto:

|_+_|

Esto le dice a la biblioteca detalles específicos sobre la pantalla que está utilizando. Ahora debería estar listo para continuar con la compilación.

El caso

Si está construyendo esto en una placa de prueba, o no desea empaquetarlo, puede omitir este paso.

Diseñé e imprimí en 3D esta caja. Pon los archivos en Thingiverse . No se preocupe si no tiene una impresora 3D - servicios en línea Hubs 3D y Shapeways proporcionar servicios de impresión en línea.

Podrías hacer esta caja fácilmente con madera o comprando un plástico. caja de proyecto .

La tapa tiene un diseño simple de ajuste a presión y contiene algunos recortes para el hardware:

El código

Ahora que todo está listo, es el momento del código. Así es como funcionará en Pseudocódigo :

|_+_|

Para que esto funcione correctamente, es necesario generar un número aleatorio: esta es la tirada del dado. Arduino tiene un generador de números aleatorios llamado aleatorio , pero no debería usarlo. Si bien es lo suficientemente bueno para tareas aleatorias básicas, simplemente no es lo suficientemente aleatorio para un dado electrónico. Los motivos son algo complicados, pero puedes leer más si estás interesado en boallen.com .

Descargar el TrueRandom biblioteca por sirleech en Github. Agregue esto a la carpeta de su biblioteca y reinicie el IDE.

Ahora cree un nuevo archivo y configure su código inicial (o simplemente tome el código terminado de GitHub):

|_+_|

Este código configura el OLED e incluye todas las bibliotecas que necesita para comunicarse con él, junto con su nueva biblioteca de números aleatorios. Ahora agregue esto al bucle principal:

|_+_|

Esto es bastante básico en este momento, pero es un D20 funcional. Siempre que se presiona el botón, se muestra un número aleatorio entre uno y 20 en la pantalla:

Esto funciona bien, pero es un poco aburrido. Hagámoslo mejor. Crea dos nuevos métodos, drawDie y borrar :

|_+_|

Estos dibujarán un dado en el medio de la pantalla. Es posible que desee hacer esto más complicado, tal vez dibujando un D20, o un D12, etc., pero es más sencillo dibujar un dado básico de seis lados. Aquí está el uso básico:

|_+_|

A continuación, modifique su bucle principal para dibujar el número aleatorio, solo que más grande y en el medio. Cambie el tamaño del texto y el cursor a esto:

|_+_|

Se ve mucho mejor ahora:

El único problema es con números mayores a nueve:

La solución para esto es simple. Cualquier número menor que 10 hará que el cursor se coloque en una posición diferente a la de los números 10 o mayor. Reemplazar esta línea:

cómo ocultar la barra de tareas en el segundo monitor
|_+_|

Con este:

|_+_|

Así es como se ve ahora:

Todo lo que queda ahora es para las imágenes cuando lanza un golpe crítico o falla. Hay algunos pasos involucrados, pero es un proceso bastante simple.

Encuentre una imagen adecuada que desee usar (cuanto más simple, mejor, ya que la pantalla es de un solo color). Aquí están las imágenes que utilicé:

Credito de imagen: publicdomainvectors.org

Cualquier imagen que desee utilizar deberá convertirse en una matriz HEX. Esta es una representación de la imagen en forma de código. Hay muchas herramientas disponibles para hacer esto, y algunas están escritas específicamente para pantallas OLED. La forma más sencilla es utilizar el PicturetoC_Hex herramienta en línea. Aquí están los ajustes necesarios:

cuál es la dirección IP de mi impresora

Sube tu imagen y configura el formato del código en HEX: 0x . Colocar Usado para para Blanco / negro para todas las funciones de dibujo de imagen . Deje todas las demás opciones como predeterminadas. Puede cambiar el tamaño de la imagen aquí si es necesario. prensa Obtener cadena C y debería ver aparecer la información de la imagen:

Necesitará estos datos generados en un minuto. Crea dos funciones llamadas drawExplosion y dibujarCráneo (o un nombre adecuado para su versión). Aquí está el código:

|_+_|

Si desea utilizar las imágenes que he utilizado, siga adelante y copie el código. Si desea utilizar sus propias imágenes que generó anteriormente, copie el código de bytes en el imSku y imExp matrices según sea necesario.

Así es como se ven esas imágenes en la pantalla:

La parte más importante de ese código es esta línea:

|_+_|

Esto le dice al Arduino que almacene sus imágenes en la EEPROM ( ¿Qué es EEPROM? ) en lugar de su RAM ( guía rápida de RAM ). La razón de esto es simple; el Arduino tiene RAM limitada, y usarlo todo para almacenar imágenes puede no dejar nada restante para que su código se ejecute

Modifica tu principal si declaración para mostrar estos nuevos gráficos cuando se lanza un uno o un 20. Tenga en cuenta las líneas de código para mostrar el número junto con las imágenes también:

|_+_|

Y así es como se ven esos nuevos rollos:

Eso es todo por el lado del código (ve a tomar el código de GitHub si te saltaste todo eso). Puede modificarlo fácilmente para que sea D12, D8, etc.

Montaje final

Ahora que todo lo demás está terminado, es hora de empaquetarlo todo. Atornille la pantalla, asegurándose de no apretar demasiado los pernos. Esta es posiblemente la parte más difícil. Rompí una pantalla al hacerlo, por lo que es posible que desee usar algunas arandelas de plástico. Corté algunos cuadrados de Plasticard :

Las tuercas y tornillos pequeños pueden ser difíciles de conectar. Propina: Use un pequeño trozo de Blu-Tack en el extremo de un destornillador para asentar inicialmente las tuercas:

Enrosque el botón, conecte la batería y cierre la tapa. Tenga cuidado de no atrapar ningún cable o de atarlos demasiado apretados, lo que posiblemente provoque un cortocircuito. Dependiendo de la longitud de los cables de arrastre, es posible que deba proteger las conexiones expuestas con algo de aislamiento (una caja en serie funciona bien):

Así es como se ve por dentro:

Y aquí está el producto terminado:

¡Ahora debería ser el orgulloso propietario de un D20 electrónico!

¿Qué modificaciones hiciste? ¿Cambiaste las imágenes? Háganos saber en los comentarios, ¡nos encantaría ver lo que hizo!

Cuota Cuota Pío Correo electrónico Una guía para principiantes para animar el habla

Animar el habla puede ser un desafío. Si está listo para comenzar a agregar diálogos a su proyecto, analizaremos el proceso por usted.

Leer siguiente
Temas relacionados
  • Bricolaje
  • Arduino
  • Juego de mesa
  • Electrónica
Sobre el Autor Joe Coburn(136 Artículos publicados)

Joe es licenciado en Ciencias de la Computación por la Universidad de Lincoln, Reino Unido. Es un desarrollador de software profesional, y cuando no está volando drones o escribiendo música, a menudo se le puede encontrar tomando fotos o produciendo videos.

Más de Joe Coburn

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse