Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Traje de panel de píxeles LED de Pac-Man

Componentes y suministros

Arduino UNO
× 1

Herramientas y máquinas necesarias

Cortadora láser (genérica)
No * necesario * pero muy útil

Acerca de este proyecto

Introducción

En primer lugar, digamos lo obvio:nos gusta hacer disfraces familiares.

El año pasado hicimos "alienígenas" espaciales que en realidad se parecían más a personas vestidas de plata con detalles en tiras de LED. Nos gustaron mucho los LED, ya que son únicos y hacen que los niños sean fáciles de ver cuando corren por la noche. Decidimos hacer algo que se encienda de nuevo, pero no estábamos seguros de qué. Fue mi hija quien sugirió Pac-Man, ya que recientemente había jugado a la joya Namco en una bolera unas semanas antes. Esa sugerencia fue todo lo que necesitaríamos. Fue una gran idea y teníamos que hacerla realidad.

Planificación

El primer paso es siempre la planificación, pero vale la pena señalarlo, especialmente si quieres hacer un personaje de 8 bits diferente.

Elegimos personajes de Pac-Man para la familia. Pac-Man, Ms. Pac-Man y los fantasmas Blinky y Pinky. Quería que fuera preciso y auténtico para los personajes originales de 8 bits, así que comencé buscando los sprites originales del juego.

Estos ayudan a garantizar que obtengamos el diseño correcto de píxeles y muestran cada cuadro de las animaciones. Por ejemplo, puedes ver los diferentes marcos de las piernas fantasma y la boca de Pac-Man en los sprites de arriba.

Luego dispuse cada cuadro de las animaciones en Excel para que sepamos dónde está la cantidad de LED y el diseño general de cada placa. Los números individuales de los LED se necesitan más adelante para programar la placa Arduino.

Puede ver por el diseño que los fantasmas tienen 14 píxeles de alto por 14 píxeles de ancho. Pac-Man mide 13x13 y Ms.Pac-Man mide 14x14.

Una vez que conocemos el ancho y el alto por píxeles, tenemos que decidir qué tan grandes queremos hacer los paneles. Quería que todos tuvieran el mismo tamaño entre sí. Lo que significa que cada píxel tendría el mismo tamaño en cada disfraz. Para escalarlos correctamente, comenzamos asegurándonos de que fuera del tamaño adecuado para el miembro más pequeño de la familia, mi hijo. Lo mido y levanté algunos recortes de cartón para ver de qué tamaño podía poner cómodamente sus brazos y seguir caminando. Terminamos en 22 "como el tamaño de los fantasmas en alto y ancho.

Eso estableció nuestra escala 22 "/ 14 píxeles =1,57" / píxel.

Materiales

Queríamos que los disfraces se usaran con relativa facilidad, por lo que optamos por materiales ligeros en lugar de duraderos.

  • Base: Cartón de 1/8 ", cortado con láser y pegado en caliente
  • Funda translúcida: Papel de dibujo (vitela o mylar)
  • LED: LED de 12 mm DC5V WS2811 direccionables individualmente (cadenas de 50)
  • Tablero: Ardunio Uno R3
  • Energía: Fuente de alimentación portátil de 5 V CC (como un cargador de teléfono portátil) + Adaptador USB a CC
  • Varios: Adaptadores de conector de alimentación de CC Cables de puente de placa de pruebas Fuente de alimentación de CC de 5 V, para probar Cinta adhesiva de velcro tejida para conductos

La base

Afortunadamente, tengo acceso a un cortador láser, así que sabía que lo usaría para hacer estos. No necesitará su propia cortadora láser. Puede enviarlo para que lo corte una empresa que realice corte por láser, o puede seguir la ruta manual e imprimir el PDF y colocarlo en el cartón y cortarlo a mano.

La base está hecha de láminas de cartón de 1/8 "compradas en la tienda de arte / pasatiempo local. Nuestra cortadora láser tiene una cama de 32" x18 ", así que les pedí que cortaran las láminas a ese tamaño.

Panel El panel se compone de algunas partes principales:la base, las lamas, la funda y la correa. La base sostiene los LED, la pizarra proporciona los píxeles y la estabilidad general del panel, la cubierta difunde la luz y la correa lo hace portátil.

Modelado

Para hacer los archivos para la cortadora láser modelé la base usando Rhino. Modelé todas las partes del panel con mucha precisión en un esfuerzo por dejar que la cortadora láser hiciera todo el trabajo posible.

Hice cada panel de modo que cada aleta vertical y horizontal se deslizara entre sí y también hiciera una muesca en la base. Configurarlo de esta manera permite que las partes del panel se deslicen y hagan muescas juntas sin necesidad de mucho pegamento, al tiempo que asegura que obtendremos cuadrados perfectos para los píxeles.

Corte por láser

Como se mencionó anteriormente, nuestra cortadora láser es de 32 "x18", por lo que los archivos CAD que hice para hacer el corte láser están configurados en ese tamaño. He agregado el archivo .dwg para el disfraz de Fantasma. Puedes usarlo para cortar el tuyo con láser, o puedes imprimirlo y usarlo como plantilla para cortar el cartón a mano.

Si lo vas a hacer a mano, puedes disponerlo fácilmente y cortar tiras de cartón. Puede medirlo usted mismo, los píxeles son de aproximadamente 1.5 "cuadrados y 2" de profundidad con un orificio de 12 mm en el medio para los LED. También puede utilizar el PDF proporcionado como plantilla para cortar.

Montaje

La base tuvo que cortarse en dos piezas ya que la pequeña dimensión de la cama de nuestro cortador láser es de 18 ", que es más pequeña que la dimensión de 22" x 22 "de la base. Usé cinta adhesiva de buena calidad en la unión para mantenerla unida inicialmente. Esto es realmente para mantenerlo en su lugar mientras se agregan los LED y las lamas. Una vez que las lamas se agregaron a la base, proporcionaron el soporte y la estabilidad reales.

Cada listón está etiquetado con una puntuación "H #" o "V #" para Horizontal (H) y Vertical (V) y qué número (#) en orden. Los listones se deslizan entre sí muy bien ya que agregamos un espacio libre adicional de 1/32 ". Mis primeras pruebas dejaron mucho menos espacio donde se deslizaron juntos e hicieron imposible juntarlos todos. Una vez que se deslizaron todos juntos, colocamos los listones en la base . Hicieron una muesca donde están los orificios en forma de signo más en la base. Una vez que estuvo en la base, pegué con cinta adhesiva los listones a la base en los extremos. Luego agregué una pequeña gota de pegamento caliente en la esquina superior izquierda donde se unen los listones para mantenerlos en su lugar y asegurarse de que no se resbalen.

Las muescas para los listones se extienden a través de la base, por lo que hay una pequeña pestaña en la parte posterior de la base. También agregué una gota de pegamento caliente a estas pestañas para mantener las tablillas de forma segura en la base.

Después de pensar

Como puede ver en el diagrama del modelo 3D, no planeé un recinto en la parte posterior del panel. ¡Esto fue un error! Me di cuenta de esto un par de horas antes de la garrapata o trato y rápidamente corté tiras de cartón de 2.5 "y las agregué a la parte posterior del panel. Para que algo más que los cables LED descanse contra el cuerpo.

Esto ayudó, pero realmente debería haber estado completamente cerrado. Al caminar con los paneles con la parte trasera abierta, los LED tienden a empujarse hacia adentro. Puede ver en algunas de las imágenes donde los píxeles ya no son realmente píxeles, sino luces puntuales. Aquí es donde se empujaron o cayeron los LED. Paré a la familia varias veces para arreglarlos durante la noche o para hacer tic-tac.

Diseño de LED

La planificación de las cadenas de LED se realizó en Excel, donde coloqué los 170 LED individuales en orden de 0 a 169 para los Ghosts.

Diseño de Excel

Lo importante a tener en cuenta son las distancias entre los píxeles y el punto de inicio.

Si no desea cortar y volver a cablear las luces preinstaladas, debe asegurarse de poder pasar de un orificio a otro en su secuencia. En mi caso, la distancia entre los LED individuales en el paquete prehendido es de aproximadamente 3 pulgadas (75 mm). Esto significaba que los píxeles tenían que estar adyacentes entre sí al colocarlos.

Para el punto de partida, asegúrese de que esté cerca de donde puede montar el Arduino y la fuente de alimentación.

Colocación de los LED

Siguiendo el patrón establecido en Excel, empujamos los LED desde la parte posterior a su lugar en el cartón.

Los LED tienen una pequeña brida que los mantiene en su lugar. Descubrí que el cartón es un poco endeble, por lo que los LED se movieron un poco al caminar. Si desea mantenerlos en su lugar de forma más segura, puede ponerles un poco de pegamento caliente.

Cableado

Fuente de alimentación

La mejor manera de alimentarlo es con una batería recargable de 5 V CC (también conocida como cargador de teléfono portátil). Luego, use un adaptador de USB a CC para conectar sus luces, que ahora deberían estar conectadas con el adaptador de CC hembra.

Cometí un error y usé un paquete de baterías 8xAA con un interruptor de encendido / apagado que tenía de los disfraces del año anterior. Fue solo mientras escribía esto que me di cuenta de que tiene una salida de 12V y estaba usando LED de 5V. (No soy cirujano de cohetes, pero creo que esto es malo). Como tenía el paquete de baterías, simplemente lo levanté y lo enchufé y todo funcionó y no lo adiviné ¯ \ _ (ツ) _ / ¯

Curiosamente, los paquetes de baterías que usé nos dieron solo alrededor de 2 horas de funcionamiento. Después de descubrir que eran la fuente de alimentación incorrecta para los paneles, probé los paneles con el cargador de teléfono portátil de 5 VCC correcto y duraron mucho más.

Probé un cargador portátil de 2200 mAh y un cargador portátil de 7800 mAh y los paneles funcionaron durante 3h 40m y 12h 43m respectivamente. Esto significa que con un "cargador de lápiz labial" barato puede obtener casi 4 horas a tiempo.

LED

Usé cadenas de LED de 12 mm WS2811 direccionables individualmente para señalización exterior. Los compré en Amazon y venían en cadenas de 50.

Cableado

El cableado de la energía a las luces y luego a la placa se realiza como se muestra en el diagrama y la foto.

El LED principal de la primera cadena tiene una conexión de alimentación, hay dos cables (vivo / rojo y tierra / blanco). Estos están conectados a un adaptador de enchufe hembra. La fuente de alimentación está conectada a este adaptador. Luego conectamos la energía, la tierra y los datos de los primeros LED que están conectados a las conexiones 5v y GND en el Arduino y el cable DATA (medio) se conecta al 3 PIN en la placa.

Asegúrese de verificar su cadena de LED antes de conectarlo. Mis cables LED eran rojo (5V), verde (DATA), blanco (GND), pero el tuyo puede ser diferente.

Código

Una vez que esté todo conectado, las luces no harán nada cuando las conecte. Tal vez parpadeen brevemente. Necesitan que les digan qué hacer primero y así es como lo hice.

No estoy cubriendo cómo programar una placa Arduino. Si no sabe cómo hacer esto, hay un gran artículo en el sitio web de Arduino:Introducción a Arduino

FastLED

Usé la biblioteca FastLED para estos. Es fácil de usar y fácil de encontrar ejemplos para ayudar a resolver todo. Fue útil que usaran Web Colors para que pueda configurar cualquier LED a cualquier color usando el nombre.

Mi código

A continuación se muestra el código del Ghost, también he subido el archivo de código Arduino.

El esquema básico de la lógica es llenar todos los LED con el color principal, luego cambiar el color y apagar los conjuntos individuales de LED para hacer cada "marco". Una vez que tenemos un conjunto para cada "fotograma" de la animación, los recorremos en bucle a una velocidad X X un número de veces para hacer la animación completa. Puede haber una forma más inteligente de hacer esto, pero así es como lo hice y funcionó para mí.

Agrega la portada

Recomiendo dejar la tapa hasta el final ya que está hecha de papel y se puede rasgar. También es útil poder alcanzar los LED desde el frente cuando los coloca en su lugar o hace ajustes.

Usé un rollo de papel de dibujo que tenía por ahí. Estoy bastante seguro de que es vitela, pero podría ser mylar. De cualquier manera, lo que desea es un papel translúcido que sea lo suficientemente ancho como para cubrir todo, de modo que no tenga que lidiar con una costura. Puede conseguir rollos de papel de dibujo en una tienda de arte o en línea.

Para mantener el papel en su lugar, puse una línea de pegamento Elmers regular a lo largo del borde superior de las aletas verticales. No hice los horizontales, ya que todo lo que realmente necesitas es que el papel permanezca en su lugar. Mantener el papel pegado asegura que la cuadrícula se lea y haga que el panel se vea como píxeles individuales.

Después de colocar el pegamento, coloque el papel encima y coloque libros o algo pesado encima para mantenerlo en su lugar y dejar que el pegamento se fije.

Una vez que se seque el pegamento, puede cortar el exceso de papel. Deje un poco más de papel alrededor de los bordes para doblar y pegar con cinta adhesiva, esto ayuda a garantizar que los bordes no se despeguen ni se aflojen.

Listo para la carretera

Para los pasos finales, lo preparamos para salir a la carretera.

  • Monte el Arduino y la fuente de alimentación en la parte posterior con Velcro
  • Une las conexiones con cinta adhesiva para que no se suelten
  • Agrega una correa para llevarlo contigo. Usé una correa de conducto tejida para esto (como el papel de dibujo que tenía).
  • Carga música y efectos de sonido de Pac-Man en tu teléfono y trae un altavoz bluetooth

Beneficio

Una vez que haya terminado, puede enviar a su familia de 8 bits al vecindario para impresionar a los vecinos y recolectar sus ganancias de dulces dulces.

¡Gracias por leer! Si tiene alguna pregunta, no dude en hacerla.

Código

  • Código de animación LED Ghost
  • MsPacman
  • Pacman
Código de animación LED Ghost Arduino
Este código ejecuta la animación para los Ghosts
 // LED PACMAN GHOST ANIMADO # incluye "FastLED.h" #define NUM_LEDS 170 # define DATA_PIN 3CRGB leds [NUM_LEDS]; void setup () {delay (2000); FastLED.addLeds  (leds, NUM_LEDS); FastLED.setBrightness (40); // Número 0-255 FastLED.clear ();} // mirando a la izquierda eyes_pixels_l [] ={17, 20, 21, 24, 37, 38, 39, 40, 41, 47, 48, 49, 94, 102, 103, 106, 119, 120, 121, 122, 123, 129, 130, 131}; int pupils_pixels_l [] ={15, 16, 22, 23, 92, 93, 104, 105}; // mirando a la derecha con los ojos_pixels_r [ ] ={38, 39, 40, 46, 47, 48, 49, 50, 63, 66, 67, 75, 120, 121, 122, 128, 129, 130, 131, 132, 145, 148, 149, 152 }; int pupils_pixels_r [] ={64, 65, 76, 77, 146, 147, 153, 154}; // eliminar píxeles alrededor de feetint void_pixels_1 [] ={8, 29, 30, 31, 83, 84, 85, 86, 138, 139, 140, 161}; int void_pixels_2 [] ={7, 31, 55, 56, 57, 112, 113, 114, 138, 162}; int sad_ghost [] ={11, 26, 35, 48, 49, 53, 60, 64, 65, 80, 89, 104, 105, 109, 116, 120, 121, 134, 143, 158}; int eyes_seconds =2; int reg_ghost_seconds =10; int feet_delay =120; // retraso en ms b / w pies v1 v2int eye_loop =(ojos_segundos * 1000) / feet_delay; // cuántas veces mirar hacia la izquierda y hacia la derecha antes de cambiar int reg_ghost_loop =reg_ghost_seconds / eyes_seconds; int sad_ghost_loop =50; int sad_ghost_blink_loop =10; void loop () {for (int i =0; i  
MsPacman Arduino
 // LED MS PACMAN ANIMADO # incluye "FastLED.h" #define NUM_LEDS 151 # define DATA_PIN 3CRGB leds [NUM_LEDS]; void setup () {delay (2000); FastLED.addLeds  (leds, NUM_LEDS); FastLED.setBrightness (40); // Número 0-255 FastLED.clear ();} int void_pixels_opened [] ={6,7,22,23,24,25,26,27,28,29,30,43,44,45,46,47 , 48,49,50, 51,52,53,54,55,56,57,58,68,69,70,71,72,73,74,75,76,77, 78,79,80,81 , 82,83,84,85,86,98,99,100,101,102,103,104, 105,106,107,108,109,127,128,129,130,131,132}; int void_pixels_mid [] ={5,150,45,46,47,48,49,50,51,52,53,54,55,56, 57,58,68,69,70,71,72, 73,74,75,76,77,78,79,80,81,82,83,84,85,100,101,102,103,104}; int void_pixels_closed [] ={5,150}; int red_opened [] ={92,93,115,116,117,118,119,121,137,138,140,141,142,143,144,145,5,8,133,150}; int red_mid [] ={92,93,115,116,117,118,119,121,137,138,140,141,142,143,144,145,27,26,15,106,17; int {92,93,115,116,117,118,119,121,137,138,140,141,142,143,144,145,27,26,116,145,17; blue_opened [] ={120,139,96}; int blue_mid [] ={120,139,97}; int blue_closed [] ={120,139}; int black_opened [] ={40,95,111,112,124}; int black_mid [] ={40,96,110,111 }; int black_closed [] ={40,95,96,97,98}; int frame_rate_ms =100; void loop () {// ---- BOCA ABIERTA- --- //// rellenar bodyfill_solid (leds, NUM_LEDS, CRGB ::Yellow); // eliminar mouthfor (int i =0; i <64; i ++) {leds [void_pixels_opened [i]] =CRGB ::Black;} // set redfor (int i =0; i <20; i ++) {leds [red_opened [i]] =CRGB ::Red;} // set bluefor (int i =0; i <3; i ++) {leds [blue_opened [i]] =CRGB ::Blue;} // set blackfor (int i =0; i <5; i ++) {leds [black_opened [ i]] =CRGB ::Morado;} FastLED.show (); delay (frame_rate_ms); // ---- BOCA MEDIA ---- //// rellenar bodyfill_solid (leds, NUM_LEDS, CRGB ::Amarillo); // eliminar mouthfor (int i =0; i <39; i ++) {leds [void_pixels_mid [i]] =CRGB ::Black;} // establecer redfor (int i =0; i <20; i ++) {leds [ red_mid [i]] =CRGB ::Red;} // establecer bluefor (int i =0; i <3; i ++) {leds [blue_mid [i]] =CRGB ::Blue;} // establecer blackfor (int i =0; i <4; i ++) {leds [black_mid [i]] =CRGB ::Purple;} FastLED.show (); delay (frame_rate_ms); // ---- BOCA CERRADA ---- /// / llenar bodyfill_solid (leds, NUM_LEDS, CRGB ::Amarillo); // mouthfor (int i =0; i <2; i ++) {leds [void_pixels_closed [i]] =CRGB ::Black;} // set redfor (int i =0; i <20; i ++) {leds [red_closed [i]] =CRGB ::Red;} // establecer bluefor (int i =0; i <2; i ++) {leds [blue_closed [i]] =CRGB ::Blue;} // establecer blackfor (int i =0; i <5; i ++) {leds [black_closed [i]] =CRGB ::Purple;} FastLED.show (); delay (frame_rate_ms); // ---- BOCA MEDIA ---- //// fill bodyfill_solid (leds, NUM_LEDS, CRGB ::Yellow); // eliminar mouthfor (int i =0; i <39; i ++) {leds [void_pixels_mid [i]] =CRGB ::Black;} // establecer redfor (int i =0; i <20; i ++) {leds [red_mid [i]] =CRGB ::Red;} // establecer bluefor (int i =0; i <3; i ++) {leds [blue_mid [i]] =CRGB ::Blue;} // establece blackfor (int i =0; i <4; i ++) {leds [black_mid [i]] =CRGB ::Purple;} FastLED.show (); delay (frame_rate_ms);} 
Pacman Arduino
 // LED PACMAN ANIMADO # incluye "FastLED.h" #define NUM_LEDS 137 # define DATA_PIN 3CRGB leds [NUM_LEDS]; void setup () {delay (2000); FastLED.addLeds  (leds, NUM_LEDS); FastLED.setBrightness (40); // Número 0-255 FastLED.clear ();} int void_pixels_opened [] ={19,20,21,22,23,24,25,26,27,28,29,42,43,44,45,46 , 47,48,49,50,51,52,53,54,55, 56,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80 , 81,82,94,95,96,97,98,99,100, 101,102,103,104,105,121,122,123,124,125,126}; int void_pixels_mid [] ={46,47,48,49,50,51,52,53,54,66,67,68, 69,70,71,72,73,74,75,76,77,78,79,80,98,99,100}; int frame_rate_ms =100; void loop () {// ---- BOCA ABIERTA --- - //// rellenar bodyfill_solid (leds, NUM_LEDS, CRGB ::Yellow); // quitar la boca para (int i =0; i <61; i ++) {leds [void_pixels_opened [i]] =CRGB ::Black;} FastLED .show (); delay (frame_rate_ms); // ---- BOCA MEDIO ---- //// rellenar bodyfill_solid (leds, NUM_LEDS, CRGB ::Amarillo); // eliminar mouthfor (int i =0; i <27; i ++) {leds [void_pixels_mid [i]] =CRGB ::Black;} FastLED.show (); delay (frame_rate_ms); // ---- BOCA CERRADA ---- //// rellenar bodyfill_solid (leds, NUM_LEDS, CRGB ::Amarillo); FastLED.show (); delay (frame_rate_ms); // ---- BOCA MEDIA ---- //// rellenar bodyfill_solid (leds, NUM_LEDS, CRGB ::Amarillo); // eliminar mouthfor (int i =0; i <27; i ++) {leds [void_pixels_mid [i]] =CRGB ::Black;} FastLED.show (); delay (frame_rate_ms);} 

Piezas y carcasas personalizadas

Archivos para cortar con láser el disfraz de fantasma de cartón de 1/8 ". Está configurado para un tamaño de cama de cortadora láser de 32" x 18 ". ghostlaser-1_8th_v5_feTmMAM4r0.dwg Archivo DWG de cortador láser para la Sra. Pacman y Pacman pacman-mspacman-laser_KVFskMrPk4.dwg

Esquemas

Cómo conectar los LED, Ardunio y la energía portátil

Proceso de manufactura

  1. Diodo emisor de luz (LED)
  2. Panel LCD con Arduino para Flight Simulator
  3. Panel de interruptores / LED con Arduino para FS2020
  4. Melodía de baile del ataúd
  5. Traje de nube
  6. Cubo LED 5x5x5
  7. ¡Arduino con Bluetooth para controlar un LED!
  8. Iluminación LED de 8x por sonido
  9. Arduino Cuadrúpedo
  10. Pixel Chaser Game
  11. Mezclador de colores Arduino RGB