Table des matières:

Jeu d'arcade Stackers : 6 étapes (avec photos)
Jeu d'arcade Stackers : 6 étapes (avec photos)

Vidéo: Jeu d'arcade Stackers : 6 étapes (avec photos)

Vidéo: Jeu d'arcade Stackers : 6 étapes (avec photos)
Vidéo: TUTO - Fabriquer une Borne d'Arcade avec un PC portable (partie 1/5) 2024, Novembre
Anonim
Jeu d'arcade Stackers
Jeu d'arcade Stackers

Salut les gars, aujourd'hui, je veux partager avec vous cet incroyable jeu d'arcade que vous pouvez créer avec un tas de LED Ws2812b et un microcontrôleur/FPGA. Voici Stack Overflow - notre implémentation matérielle d'un jeu d'arcade classique. Ce qui a commencé comme un projet scolaire est rapidement devenu un travail d'amour alors que nous avons commencé à passer de plus en plus de temps à développer notre jeu et à en apprendre davantage (et négligeant nos études dans le processus xD). En fin de compte, notre jeu a été si bien construit et bien reçu par notre école qu'il a été confisqué (en tant que matériel de démonstration pour le prochain groupe d'élèves). Eh bien, nous pouvons toujours en construire un deuxième. Commençons!

Version en ligne du jeu:

Étape 1: De quoi avez-vous besoin ?

De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?

Matériaux:

1. un Microcontrôleur/Microordinateur/FPGA - Le FPGA est utilisé pour implémenter la logique de notre jeu. Choisissez votre carte, pour notre projet, nous devons utiliser la carte Mojo FPGA. Pour les non-initiés, c'est un type de carte qui utilise du matériel pour implémenter ses fonctions plutôt que des codes. Par conséquent, je dirais que son niveau est plutôt bas et complètement différent que si vous utilisez Arduino ou Pi. Si vous utilisez d'autres cartes, vous devez écrire votre propre code, mais ce jeu est assez facile à coder et hé ! Maintenant, vous pouvez aussi apprendre à coder !

2. LED Ws2812b - Ici, nous utilisons les LED pour construire l'affichage de notre jeu. Vous ne pouvez pas être un fabricant si vous n'avez pas touché aux Ws2812b avant xD. C'est adressable unique, ce qui signifie que vous pouvez couper des LED simples et les coller dans n'importe quelle formation que vous aimez. Et c'est RVB, ce qui signifie que vous pouvez produire n'importe quelle couleur que vous aimez. De plus, FastLED - la bibliothèque Arduino pour contrôler Ws2812b est très bien développée. Je recommanderais aux gens d'utiliser Arduino à la place du FPGA si vous n'en avez pas. Vous pouvez acheter les LED auprès de Taobao/Amazon, mais nous avons acheté les nôtres auprès de la tour Sim Lim à Singapour.

3. Bois - Pour le boîtier externe, nous avons utilisé du contreplaqué de 1 cm d'épaisseur et pour la matrice LED, nous avons utilisé du contreplaqué de 0,3 cm d'épaisseur. Nous avons trouvé notre stock de déchets de bois dans le fab lab de notre école.

4. Acrylique diffusant la lumière - Pour notre écran, nous avons essayé différents types d'acrylique et nous avons trouvé cet acrylique dépoli appelé PL-422 qui est vraiment bon pour diffuser la lumière. Si vous ne trouvez pas le modèle exact, essayez de chercher des acryliques givrés. Nous avons acheté le nôtre chez Dama Plastics à Singapour.

5. Panneau de mousse - Afin de séparer chaque pixel de lumière, nous avions besoin d'une structure en grille et cette mousse est le matériau idéal pour le faire. Nous avons acheté un carton mousse de 0,5 cm d'épaisseur dans la librairie de notre école.

6. Gros bouton rouge - Ok, ce n'est pas nécessaire pour nous d'avoir un si gros bouton rouge mais c'est toujours bien d'avoir un bouton pour que les gens claquent ! xD Nous l'avons acheté à la tour Sim Lim à Singapour.

Outils:

1. Colle à bois

2. Fer à souder

3. Soudure

4. Fils. C'est mieux si vous avez des fils souples par rapport aux fils plus rigides. Et monocœur par rapport au multicœur.

5. Pince à dénuder

6. Coupe-fil

7. Percez avec des forets de 1 mm

8. Scie à chantourner

9. Scie à ruban

Débogage:

1. Unité d'alimentation variable

2. Oscilloscope

Étape 2: Prototypage rapide

Prototypage rapide
Prototypage rapide
Prototypage rapide
Prototypage rapide
Prototypage rapide
Prototypage rapide
Prototypage rapide
Prototypage rapide

Pour notre projet, nous avons utilisé le prototypage rapide avant de construire notre matrice LED et de programmer notre jeu. La raison de cela est que nous ne voulons pas construire la matrice LED juste pour réaliser que nos codes ne fonctionnent pas ou que notre logique de jeu est défectueuse.

Côté matériel, dans un premier temps, nous avons juste testé notre logique de décalage des motifs lumineux sur notre propre matrice LED simple. Une fois que nous avons testé que la logique fonctionnait bien, nous sommes ensuite allés découper des bandes de 5 LED Ws2812b juste pour tester notre logique de jeu avec différentes rangées. Une fois que cela fonctionne, nous procédons ensuite à la fabrication de la matrice LED à grande échelle.

Nous avons également testé différents échantillons d'acrylique avec la LED avant de choisir PL-422 comme le meilleur diffuseur de lumière. Et pour la structure du séparateur, nous avons également testé différentes hauteurs pour que la LED diffuse pleinement. Au final nous avons réalisé un carré de 3cm*3cm avec une hauteur de 4cm pour être le meilleur pour la diffusion. Sur la base de cette taille optimale, nous avons également décidé quelle est la taille de contreplaqué nécessaire pour une matrice LED 5 x 11 en laissant un espace de 0,5 cm pour la mousse entre les carrés.

Côté logiciel, nous essayons d'être le plus modulaire possible - nous testons d'abord si les LED peuvent être allumées avant de procéder à l'ajout de la fonction shift, puis d'autres. Les résultats pourraient être catastrophiques si vous ne le faites pas. Nous avons appris cela à nos dépens en essayant de coder tout le jeu en gros avant de réaliser que nous ne pouvions pas le déboguer. Aie!

Étape 3: faire le boîtier

Faire le boîtier
Faire le boîtier
Faire le boîtier
Faire le boîtier
Faire le boîtier
Faire le boîtier
Faire le boîtier
Faire le boîtier

Pour notre boîtier, nous avons opté pour des sensations et des looks de machine d'arcade classique. Tout d'abord, nous avons coupé du contreplaqué fin pour prototyper rapidement la forme car il est plus facile et plus rapide de couper du contreplaqué fin et de tester. Une fois satisfaits de nos dimensions et de notre forme, nous avons commencé à utiliser du contreplaqué plus épais pour construire le boîtier. Nous avons utilisé une scie à ruban pour couper à travers le contreplaqué plus épais et une scie à chantourner pour couper les plus minces. Après cela, nous avons utilisé de la colle à bois pour les coller ensemble.

Pour l'arrière du contreplaqué, nous voulions accéder facilement à l'électronique à l'intérieur, c'est pourquoi nous en avons fait une pièce verrouillable que vous pouvez facilement retirer quand vous le souhaitez.

Pour fixer le bouton, nous avons d'abord tracé un cercle de la taille du diamètre du microrupteur du bouton (la partie longue inférieure du bouton). Nous avons ensuite percé un trou près du bord et utilisé la scie à chantourner pour scier un cercle à travers. Ensuite, nous avons placé le bouton et l'avons vissé.

Nous avons également coupé un mince morceau de contreplaqué comme base de notre matrice LED selon les tailles que nous avons calculées auparavant.

Remarque: Je m'excuse pour l'absence de processus étape par étape. Nous n'avons pas documenté toutes les étapes et au moment où nous avons réalisé que nous devions documenter les étapes, le boîtier était déjà terminé. Le diagramme n'est pas non plus les dimensions finales.

Étape 4: Création de la matrice LED

Faire la matrice LED
Faire la matrice LED
Faire la matrice LED
Faire la matrice LED

En utilisant le morceau mince que nous avons découpé plus tôt, nous marquons d'abord la position de chaque LED en dessinant un carré basé sur notre structure en mousse et en traçant une croix au milieu du carré comme endroit où nous devons coller la LED. Ensuite, nous perçons également 3 petits trous de chaque côté de la LED pour que les fils passent et les soudons à chaque LED.

Nous chaînons chaque rangée de LED par leurs broches Data In et Data Out et nous soudons chaque GND et VCC à un fil commun. Le premier Data In générera les motifs lumineux pour chaque rangée et nous l'avons connecté au brochage du microcontrôleur/FPGA. Vous pouvez également souder la dernière Data Out d'une rangée à la Data In de tête d'une autre rangée. Le fonctionnement de la LED Ws2812b est que chaque LED contient un circuit intégré qui prendra les données requises du fil et transmettra le reste dans la chaîne. Nous avons basé notre LED sur un autre fantastique Instructables (en fait, nous l'avons copié exactement ! xD)

Ici, nous aimerions également souligner l'importance d'utiliser des fils souples. Si vous utilisez des fils rigides et durs pour la broche d'entrée de données principale, chaque fois que vous tirez sur le fil, il peut retirer le rembourrage en cuivre de votre Ws2812b, ce qui le détruira. Dans ce projet, avant de passer aux fils souples, nous avons détruit un total de 40 LED, soit 1/3 des LED nécessaires à notre projet.

Instructable:

Étape 5: écriture des codes de jeu et débogage du matériel

Écriture des codes de jeu et débogage du matériel
Écriture des codes de jeu et débogage du matériel
Écriture des codes de jeu et débogage du matériel
Écriture des codes de jeu et débogage du matériel
Écriture des codes de jeu et débogage du matériel
Écriture des codes de jeu et débogage du matériel

Mojo fonctionne sur Lucid HDL, qui n'est pas le langage le plus populaire. Nous ne trouvons aucune bibliothèque LED Ws2812b dans Lucid, nous avons donc eu recours à l'écriture de notre propre bibliothèque, ce qui est une expérience très intéressante. Pour ce faire, nous avons d'abord analysé le signal qui est transmis à l'aide de la bibliothèque FastLED d'Arduino et écrit des codes pour le reproduire. Voici une astuce de débogage matériel, l'oscilloscope est très, très utile pour analyser des signaux, qu'il s'agisse de déboguer votre propre signal dont vous n'êtes pas sûr ou de vérifier et de copier d'autres signaux.

Après avoir écrit la bibliothèque pour le Ws2812b, nous avons ensuite procédé au codage du jeu, nous avons utilisé les fonctions Bit shift pour déplacer chaque bloc vers la gauche et vers la droite et utilisé Bitwise AND à AND les carrés de chaque ligne à la ligne précédente. Vous pouvez également penser à implémenter cela dans Arduino, ce qui ne devrait pas être si difficile. Nous avons même codé des écrans de jeu pour le plaisir !

Notre jeu avait 2 niveaux, qui est le jeu d'empilement visible (Vert) et le jeu d'empilement invisible de deuxième niveau (Bleu).

Même après que nous ayons eu des codes et une matrice de LED fonctionnels, nous sommes parfois confrontés à des problèmes tels que le scintillement des lumières ou l'allumage des lumières alors qu'elles ne le devraient pas. Le problème est généralement dû à une mise à la terre, un niveau d'alimentation ou des interférences incorrects. C'est là que vous aurez besoin d'autres outils de débogage matériel tels qu'une unité d'alimentation variable pour vérifier si l'alimentation du Mojo/Arduino est suffisante ou trop élevée. D'après mon expérience, le Ws2812b a une gamme assez large de tensions de fonctionnement de 2,8 V à 5 V. Ici, j'ai une vidéo qui montre que les lumières deviennent folles après avoir augmenté la puissance.

Cependant, une vérification plus approfondie a révélé que nous avions des soudures incorrectes, après les avoir ressoudées à nouveau, notre problème a été résolu. Il pourrait également y avoir un problème d'interférence ou de diaphonie, mais heureusement, nous n'avons jamais été confrontés à aucun d'entre eux.

Codes Github:

Décalage au niveau du bit Arduino:

Arduino Bitwise AND:

Étape 6: Tout assembler

Tout mettre ensemble
Tout mettre ensemble
Tout mettre ensemble
Tout mettre ensemble
Tout mettre ensemble
Tout mettre ensemble
Tout mettre ensemble
Tout mettre ensemble

Vous avez le boîtier et la matrice LED. Il est maintenant temps de tout mettre en place. Nous plaçons d'abord la mousse sur le devant et la matrice LED derrière et ajustons la position. Parce que la mousse a une friction très élevée, elle a juste été montée par friction tandis que la matrice LED est collée à chaud en place. Après cela, nous avons placé l'écran devant la grille. Nous avons ensuite branché la broche de chaque rangée sur le microcontrôleur et avons commencé à jouer !:RÉ

Une chose que j'aime dans ce projet est sa flexibilité, vous pouvez toujours reprogrammer le microcontrôleur pour qu'il fasse partie d'un autre jeu et essayer quelque chose comme faire de l'animation ou un jeu de réaction. J'espère que vous apprécierez de le faire et que vous apprendrez quelque chose pour le faire. GgEz !

Conseillé: