Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Costume de panneau de pixels LED Pac-Man

Composants et fournitures

Arduino UNO
× 1

Outils et machines nécessaires

Coupe laser (générique)
Pas *nécessaire* mais super utile

À propos de ce projet

Présentation

Tout d'abord, disons une évidence :nous aimons faire des costumes de famille.

L'année dernière, nous avons fait des "extraterrestres" spatiaux qui ressemblaient vraiment plus à des personnes vêtues d'argent avec des accents de bandes LED. Nous avons vraiment aimé les LED car elles sont uniques et permettent aux enfants de voir facilement lorsqu'ils courent la nuit. Nous avons décidé de faire quelque chose qui s'illumine à nouveau, mais nous ne savions pas quoi. C'est ma fille qui a suggéré Pac-Man, car elle avait récemment joué le joyau de Namco dans un bowling quelques semaines auparavant. Cette suggestion était tout ce dont nous aurions besoin. C'était une excellente idée et nous devions y arriver.

Planification

La première étape est toujours la planification, mais bon, cela vaut la peine d'être noté, surtout si vous souhaitez créer un caractère 8 bits différent.

Nous avons choisi les personnages de Pac-Man pour la famille. Pac-Man, Mme Pac-Man et les fantômes Blinky et Pinky. Je voulais qu'il soit précis et authentique pour les personnages 8 bits d'origine, alors j'ai commencé par rechercher les sprites du jeu d'origine.

Ceux-ci aident à garantir que nous obtenons la bonne disposition des pixels et montrent chaque image des animations. Par exemple, vous pouvez voir les différents cadres des jambes fantômes et de la bouche de Pac-Man dans les sprites ci-dessus.

J'ai ensuite disposé chaque image des animations dans Excel afin que nous sachions où se trouvent le nombre de LED et la disposition globale de chaque carte. Les numéros individuels des LED sont nécessaires plus tard pour la programmation de la carte Arduino.

Vous pouvez voir par la mise en page que les fantômes mesurent 14 pixels de hauteur sur 14 pixels de largeur. Pac-Man mesure 13x13 et Mme Pac-Man mesure 14x14.

Une fois que nous connaissons la largeur et la hauteur en pixels, nous devons décider de la taille des panneaux. Je voulais qu'ils aient tous la même taille les uns par rapport aux autres. Cela signifie que chaque pixel aurait la même taille sur chaque costume. Pour les mettre à l'échelle correctement, nous avons commencé par nous assurer que ce serait la bonne taille pour le plus petit membre de la famille, mon fils. Je l'ai mesuré et j'ai levé quelques découpes en carton pour voir de quelle taille il pouvait encore confortablement mettre ses bras dessus et continuer à marcher. Nous nous sommes retrouvés à 22" comme taille des fantômes en hauteur et en largeur.

Cela définit notre échelle 22" / 14 pixels =1,57"/pixel.

Matériaux

Nous voulions que les costumes soient relativement faciles à porter, nous avons donc opté pour des matériaux légers plutôt que durables.

  • Base : Carton 1/8", découpé au laser et collé à chaud
  • Couverture translucide : Papier à dessin (Vélin ou Mylar)
  • LED : LED 12 mm DC5V WS2811 adressables individuellement (chaînes de 50)
  • Conseil : Ardunio Uno R3
  • Puissance : Alimentation portable 5 V CC (comme un chargeur de téléphone portable) + adaptateur USB vers CC
  • Divers : Adaptateurs de prise d'alimentation CC Câbles de pontage de planche à pain Alimentation DC5V, pour tester le ruban adhésif en toile tissée Velcro

La Base

Heureusement, j'ai accès à un cutter laser, donc je savais que je l'utiliserais pour les fabriquer. Vous n'aurez pas besoin de votre propre découpeur laser. Vous pouvez soit l'envoyer pour qu'il soit découpé par une entreprise qui fait de la découpe au laser, ou vous pouvez suivre la voie manuelle et imprimer le PDF et le disposer sur le carton et le découper à la main.

La base est faite de feuilles de carton de 1/8" achetées dans le magasin d'art/de loisirs local. Notre découpeuse laser a un lit de 32"x18" donc je leur ai fait couper les feuilles à cette taille.

Panneau Le panneau est composé de quelques pièces principales :la base, les lattes, le couvercle et la sangle. La base contient les LED, l'ardoise fournit les pixels et la stabilité globale du panneau, le couvercle diffuse la lumière et la sangle le rend portable.

Modélisation

Pour réaliser les fichiers du découpeur laser, j'ai modélisé la base à l'aide de Rhino. J'ai modélisé toutes les parties du panneau très précisément dans le but de laisser le découpeur laser faire le plus de travail possible.

J'ai fait chaque panneau de sorte que chaque ailette verticale et horizontale glisse l'une dans l'autre et qu'elles s'entaillent également dans la base. La configuration de cette façon permet aux parties du panneau de glisser et de s'entailler sans avoir besoin de beaucoup de colle, tout en garantissant que nous obtiendrions des carrés parfaits pour les pixels.

Découpage laser

Comme mentionné précédemment, notre découpeuse laser mesure 32 "x 18", donc les fichiers CAO que j'ai créés pour effectuer la découpe laser sont définis sur cette taille. J'ai ajouté le fichier .dwg pour le costume Ghost. Vous pouvez l'utiliser pour découper le vôtre au laser, ou vous pouvez l'imprimer et l'utiliser comme modèle pour découper le carton à la main.

Si vous allez le faire à la main, vous pouvez facilement le disposer et couper des bandes de carton. Vous pouvez le mesurer vous-même, les pixels mesurent environ 1,5" carré et 2" de profondeur avec un trou de 12 mm au milieu pour les LED. Vous pouvez également utiliser le PDF fourni comme modèle pour la découpe.

Assemblage

La base a dû être coupée en deux morceaux car la petite dimension de notre lit de découpe laser est de 18", ce qui est plus petit que la dimension de 22" x 22" de la base. J'ai utilisé un bon ruban adhésif en toile à la jonction pour le maintenir ensemble initialement. C'est vraiment pour le maintenir en place tout en ajoutant les LED et les lattes. Une fois les lattes ajoutées à la base, elles ont fourni le vrai soutien et la stabilité.

Chaque latte est étiquetée en marquant soit « H# » ou « V# » pour l'horizontale (H) et la verticale (V) et quel numéro (#) dans l'ordre. Les lattes glissent bien ensemble puisque nous avons ajouté un dégagement supplémentaire de 1/32". Mes premiers tests ont laissé beaucoup moins de place où elles ont glissé ensemble et ont rendu impossible tout assemblage. Une fois toutes glissées ensemble, nous avons mis les lattes sur la base . Ils ont entaillé là où se trouvent les trous en forme de signe plus dans la base. Une fois qu'il était sur la base, j'ai collé les lattes à la base sur les extrémités. Ensuite, j'ai ajouté un petit cordon de colle chaude dans le coin supérieur gauche où les lattes se rencontrent pour les maintenir en place et s'assurer qu'ils ne glissent pas.

Les encoches pour les lattes s'étendent à travers la base, il y a donc une petite languette à l'arrière de la base. J'ai également ajouté un cordon de colle chaude à ces languettes pour maintenir les lattes solidement sur la base.

Après réflexion

Comme vous pouvez le voir sur le schéma du modèle 3D, je n'ai pas prévu d'enceinte au dos du panneau. C'était une erreur ! J'ai remarqué cela quelques heures avant de cocher ou de traiter et j'ai coupé à la hâte des bandes de carton de 2,5" et les ai ajoutées à l'arrière du panneau. pour donner autre chose que les fils LED à reposer contre le corps.

Cela a aidé, mais vraiment il aurait dû être entièrement fermé. Lorsque vous vous promenez avec les panneaux avec l'arrière ouvert, les LED ont tendance à être enfoncées. Vous pouvez voir sur certaines des images où les pixels ne sont plus vraiment des pixels, mais des lumières ponctuelles. C'est là que les LED ont été enfoncées ou sont tombées. J'ai arrêté la famille plusieurs fois pour les réparer pendant la nuit ou pour les traiter.

Disposition LED

La planification des chaînes de LED a eu lieu dans Excel où j'ai disposé les 170 LED individuelles dans l'ordre de 0 à 169 pour les Ghosts.

Mise en page Excel

Les choses importantes à noter sont les distances entre les pixels et le point de départ.

Si vous ne voulez pas couper et recâbler les lumières pré-câblées, vous devez vous assurer que vous pouvez passer d'un trou à l'autre dans votre séquence. Dans mon cas, la distance entre les LED individuelles sur le faisceau pré-câblé est d'environ 3 pouces (75 mm). Cela signifiait que les pixels devaient être adjacents les uns aux autres lors de leur disposition.

Pour le point de départ, assurez-vous simplement qu'il est proche de l'endroit où vous pouvez monter l'Arduino et l'alimentation.

Placement des LED

En suivant le modèle présenté dans Excel, nous poussons les LED de l'arrière en place dans le carton.

Les LED ont une petite bride qui les maintient en place. J'ai trouvé que le carton était un peu fragile, donc les LED bougeaient un peu en marchant. Si vous souhaitez les maintenir en place de manière plus sûre, vous pouvez mettre un peu de colle chaude dessus.

Câblage

Alimentation

La meilleure façon de l'alimenter est d'utiliser une batterie rechargeable 5V DC (aka:un chargeur de téléphone portable). Ensuite, utilisez un adaptateur USB vers CC pour brancher vos lumières qui devraient maintenant être câblées avec l'adaptateur CC femelle.

J'ai fait une erreur et j'ai utilisé un bloc-piles 8xAA avec un interrupteur marche/arrêt que j'avais des costumes de l'année précédente. Ce n'est qu'en écrivant ceci que j'ai réalisé qu'il avait une sortie 12V et que j'utilisais des LED 5V. (Je ne suis pas un chirurgien de fusée mais je pense que c'est mauvais). Depuis que j'avais la batterie autour de moi, je l'ai juste ramassé et branché et tout a fonctionné et je n'ai pas deviné ¯\_(ツ)_/¯

Il est intéressant de noter que les batteries que j'ai utilisées ne nous ont donné qu'environ 2 heures d'autonomie. Après avoir découvert qu'il s'agissait de la mauvaise alimentation pour les panneaux, j'ai testé les panneaux avec le bon chargeur de téléphone portable 5VDC et ils ont duré beaucoup plus longtemps.

J'ai testé un chargeur portable 2200 mAh et 7800 mAh et les panneaux ont fonctionné respectivement 3h 40m et 12h 43m. Cela signifie qu'avec un "chargeur de rouge à lèvres" bon marché, vous pouvez obtenir près de 4 heures d'autonomie.

LED

J'ai utilisé des chaînes de LED WS2811 adressables individuellement de 12 mm pour la signalisation extérieure. Je les ai achetés sur Amazon et ils sont venus par 50.

Câblage

Le câblage de l'alimentation aux lumières puis à la carte se fait comme indiqué sur le schéma et la photo.

La LED de plomb sur la première chaîne a une alimentation en connexion, il y a deux fils (chaud/rouge et terre/blanc). Ceux-ci sont connectés à un adaptateur jack femelle. L'alimentation est branchée sur cet adaptateur. Ensuite, nous connectons l'alimentation, la terre et les données de ces premières LED sont connectées aux connexions 5v et GND sur l'Arduino et le fil DATA (milieu) se connecte aux 3 broches de la carte.

Assurez-vous de vérifier votre chaîne de LED avant de la câbler. Mes fils LED étaient rouges (5 V), verts (DONNÉES), blancs (GND), mais les vôtres peuvent être différents.

Code

Une fois que vous êtes tous branchés, les lumières ne font rien lorsque vous les branchez. Peut-être qu'elles clignoteront brièvement. Il faut d'abord leur dire quoi faire et c'est ainsi que je l'ai fait.

Je ne parle pas de la programmation d'une carte Arduino. Si vous ne savez pas comment faire cela, il y a un excellent article sur le site Web d'Arduino :Premiers pas avec Arduino

FastLED

J'ai utilisé la bibliothèque FastLED pour ceux-ci. Il est facile à utiliser et facile à trouver des exemples pour aider à tout comprendre. Il était utile qu'ils utilisent Web Colors afin que vous puissiez définir n'importe quelle LED sur n'importe quelle couleur en utilisant le nom.

Mon code

Vous trouverez ci-dessous le code du Ghost, j'ai également téléchargé le fichier de code Arduino.

Le schéma de base de la logique consiste à remplir toutes les LED avec la couleur principale, puis à changer la couleur et à éteindre les ensembles individuels de LED pour créer chaque "cadre". Une fois que nous avons un ensemble pour chaque "frame" de l'animation, nous les parcourons à une vitesse X X nombre de fois pour constituer l'ensemble de l'animation. Il existe peut-être une façon plus intelligente de procéder, mais c'est ainsi que je l'ai fait et cela a fonctionné pour moi.

Ajouter la couverture

Je recommande de laisser la couverture jusqu'au bout car elle est en papier et peut se déchirer. Il est également utile de pouvoir accéder aux leds par l'avant lors de leur mise en place ou de leurs réglages.

J'ai utilisé un rouleau de papier à dessin qui traînait. Je suis presque sûr que c'est du vélin, mais ça pourrait être du mylar. Quoi qu'il en soit, ce que vous voulez, c'est un papier translucide suffisamment large pour couvrir le tout afin que vous n'ayez pas à vous soucier d'une couture. Vous pouvez vous procurer des rouleaux de papier à dessin dans un magasin d'art ou en ligne.

Pour maintenir le papier en place, j'ai mis une ligne de vieille colle Elmers ordinaire le long du bord supérieur des ailettes verticales. Je n'ai pas fait celles horizontales car tout ce dont vous avez vraiment besoin est que le papier reste principalement en place. Garder le papier collé permet de s'assurer que la grille est lue et que le panneau ressemble à des pixels individuels.

Après avoir appliqué la colle, posez le papier dessus et placez des livres ou quelque chose de lourd dessus pour le maintenir en place et laissez la colle durcir.

Une fois la colle prise, vous pouvez couper l'excédent de papier. Laissez un peu de papier supplémentaire autour des bords pour se replier et coller, cela permet d'assurer que les bords ne se décollent pas ou ne se détachent pas.

Prêt pour la route

Pour les étapes de finition, nous le préparons à partir sur la route.

  • Montez l'Arduino et l'alimentation à l'arrière avec du Velcro
  • Scellez les connexions ensemble afin qu'elles ne se desserrent pas
  • Ajoutez une sangle pour le transporter. J'ai utilisé une sangle de conduit tissée pour cela (comme le papier à dessin avec lequel je l'avais).
  • Chargez de la musique Pac-Man et des effets sonores sur votre téléphone et apportez un haut-parleur Bluetooth

Bénéfice

Une fois que vous avez terminé, vous pouvez envoyer votre famille 8 bits dans le quartier pour impressionner les voisins et collecter vos bénéfices de bonbons sucrés.

Merci d'avoir lu! Si vous avez des questions, n'hésitez pas !

Code

  • Code d'animation fantôme LED
  • Mme Pacman
  • Pacman
Code d'animation fantôme LEDArduino
Ce code exécute l'animation pour les fantômes
//ANIMATED PACMAN GHOST LED#include "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); //Numéro 0-255 FastLED.clear();}//en regardant à gauche 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};//regarder les yeux à droite_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};//supprime les pixels autour de footint 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 eye_seconds =2;int reg_ghost_seconds =10;int feet_delay =120; //délai en ms n/b pieds v1 v2int eye_loop =(eyes_seconds*1000)/feet_delay; // combien de fois regarder à gauche et à droite avant de changer 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  
MsPacmanArduino
//ANIMATION MS PACMAN LED#include "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); //Numéro 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,883,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,105,106; int red_closed [] ={} 92,93,115,116,117,118,119,121,137,138,140,141,142,143,144,145,50,76,77,78; int 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() {//----MOUTH OPENED- ---////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow);//remove 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::Purple;}FastLED.show();delay(frame_rate_ms);//----MOUTH MID----////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); //supprimer bouchefor (int i =0; i <39; i++){ leds[void_pixels_mid[i]] =CRGB::Black;}//set redfor (int i =0; i <20; i++){ leds[ red_mid[i]] =CRGB::Red;}//set bluefor (int i =0; i <3; i++){ leds[blue_mid[i]] =CRGB::Blue;}//set blackfor (int i =0; i <4; i++){ leds[black_mid[i]] =CRGB::Purple;}FastLED.show();delay(frame_rate_ms);//----MOUTH CLOSED----/// /fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); //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;}//set bluefor (int i =0; i <2; i++){ leds[blue_closed[i]] =CRGB::Blue;}//set blackfor (int i =0; i <5; i++){ leds[black_closed[i]] =CRGB::Purple;}FastLED.show();delay(frame_rate_ms);//----MOUTH MID----//// fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow);//remove mouthfor (int i =0; i <39; i++){ leds[void_pixels_mid[i]] =CRGB::Black;}//set redfor (int i =0; i <20; i++){ leds[red_mid[i]] =CRGB::Red;}//set bluefor (int i =0; i <3; i++){ leds[blue_mid[i]] =CRGB::Blue;}//set blackfor (int i =0; i <4; i++){ leds[black_mid[i]] =CRGB::Purple;}FastLED.show();delay(frame_rate_ms);} 
PacmanArduino
//LED PACMAN ANIMÉE#include "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); //Numéro 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() {//----MOUTH OPENED--- -////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow);//remove mouthfor (int i =0; i <61; i++){ leds[void_pixels_opened[i]] =CRGB::Black;}FastLED .show();delay(frame_rate_ms);//----MOUTH MID----////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); //retirer la bouche pour (int i =0; i <27; i++){ leds[void_pixels_mid[i]] =CRGB::Black;}FastLED.show();delay(frame_rate_ms);//----MOUTH CLOSED ----////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); FastLED.show();delay(frame_rate_ms);//----MOUTH MID----////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); //retirer la bouche pour (int i =0; i <27; i++){ leds[void_pixels_mid[i]] =CRGB::Black;}FastLED.show();delay(frame_rate_ms);}

Pièces et boîtiers personnalisés

Fichiers pour découper au laser le costume de fantôme dans du carton de 1/8 ". Il est configuré pour une taille de lit de découpe laser de 32" x 18". ghostlaser-1_8th_v5_feTmMAM4r0.dwgFichier DWG de découpe laser pour Mme Pacman et Pacman pacman-mspacman-laser_KVFskMrPk4.dwg

Schémas

Comment brancher les LED, Ardunio et l'alimentation portable

Processus de fabrication

  1. diode électroluminescente (DEL)
  2. Panneau LCD avec Arduino pour Flight Simulator
  3. Switch/Panneau LED avec Arduino pour FS2020
  4. Mélodie de la danse du cercueil
  5. Costume nuage
  6. Cube LED 5x5x5
  7. Arduino avec Bluetooth pour contrôler une LED !
  8. 8x éclairage LED par le son
  9. Arduino quadrupède