ENIB 2024 : Les zinzins envahisseurs
Titre de la fiche expérience :
Sommaire
description (résumé)
éventuelle photo de l'équipe
Introduction
L'objectif de ce projet est de réaliser le jeu "Space Invader" sur une borne d'arcade, à partir d'une carte Arduino et de leds
outil et matériel
Carte ESP800266modÀ
64x leds
Structure de la borne en bois, usinée avec la découpeuse laser.
Ordinateur avec un logiciel Arduino.
Fer à souder et câbles pour l'assemblage de la matrice de led 8x8.
Potentiomètre ou joystick pour les commandes du jeu.
fichiers à joindre
code, ficher d'impression 3D, de découpe laser ou vinyle, ...
Mettre du code Arduino
1
2 /// @file ArrayOfLedArrays.ino
3 /// @brief Set up three LED strips, all running from an array of arrays
4 /// @example ArrayOfLedArrays.ino
5
6 // ArrayOfLedArrays - see https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples for more info on
7 // using multiple controllers. In this example, we're going to set up three NEOPIXEL strips on three
8 // different pins, each strip getting its own CRGB array to be played with, only this time they're going
9 // to be all parts of an array of arrays.
10
11 // Déclaration du numéro de broche pour les LED
12 #define PIN 9
13
14 // Inclusion de la bibliothèque FastLED pour la gestion des LED
15 #include <FastLED.h>
16
17 // Définition du nombre de bandes LED et du nombre de LED par bande
18 #define NUM_STRIPS 1
19 #define NUM_LEDS_PER_STRIP 256
20
21 // Déclaration d'un tableau à deux dimensions pour stocker les couleurs des LED
22 CRGB leds[NUM_STRIPS][NUM_LEDS_PER_STRIP];
23
24 // Définition de la position actuelle pour afficher le motif
25 int position;
26
27 // Définition des couleurs disponibles (0xRRGGBB)
28 int color[3] {0x000000, 0x000020, 0x200000};
29
30 // Définition d'un motif sous forme de tableau à deux dimensions
31 int test[16][16] { \
32 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
33 {0, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 2, 0, 0}, \
34 // ... (ajoutez les autres lignes de votre motif ici)
35 };
36
37 // Pour la duplication des bandes, toutes les étapes spéciales se produisent uniquement dans la configuration.
38 // Nous ajoutons simplement les bandes de LED plusieurs fois, une fois pour chaque bande.
39 void setup() {
40 // Indique à FastLED qu'il y a 60 LEDs NEOPIXEL sur la broche 2
41 FastLED.addLeds<NEOPIXEL, 2>(leds[0], NUM_LEDS_PER_STRIP);
42
43 // Indique à FastLED qu'il y a 60 LEDs NEOPIXEL sur la broche 3
44 // FastLED.addLeds<NEOPIXEL, 3>(leds[1], NUM_LEDS_PER_STRIP);
45
46 // Indique à FastLED qu'il y a 60 LEDs NEOPIXEL sur la broche 4
47 // FastLED.addLeds<NEOPIXEL, 4>(leds[2], NUM_LEDS_PER_STRIP);
48 }
49
50 // Fonction pour afficher le motif sur les LEDs
51 void affiche() {
52 for (int x = 0; x < 16; x++) {
53 for (int y = 0; y < 16; y++) {
54 // Logique pour inverser la direction des LEDs sur les lignes impaires
55 if (x % 2 == 1) {
56 position = x * 16 + y;
57 } else {
58 position = x * 16 + 15 - y;
59 }
60 // Attribution de la couleur de la LED en fonction du motif
61 leds[0][position] = color[test[x][y]];
62 }
63 }
64 // Affichage des LEDs mises à jour
65 FastLED.show();
66 }
67
68 // Boucle principale du programme
69 void loop() {
70 // Appel de la fonction d'affichage du motif
71 affiche();
72 // Pause pour ralentir le défilement des motifs
73 delay(100);
74 }
étapes de fabrication
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)
- Élément de la liste numérotée
étape 1
Il est préférable de commencer par construire une maquette carton de la structure de la borne d'arcade, afin de se faire une premières idée des dimensions, en prenant en compte la taille de votre écran de led. dessin, découpage au cutter, et assemblage au pistolet à colle.
étape 2 : étude du câblage et réalisation du support de l'écran
Il faudra ensuite étudier la documentation technique et le fonctionnement du câblage. Vous pouvez les retrouver sur cette page, avec un petit tuto vidéo.
https://www.hackster.io/mircemk/space-invaders-game-on-8x8-homemade-led-matrix-4029f8
Puis, si vous n'avez pas déjà une matrice de led 8x8, dessiner et découper le support où on fixera les led. On se servira d'une découpeuse laser pour être plus précis dans la découpe.
étape 3 : Codage du jeu
Codage du jeu en Arduino.
étape 4
Il faut ensuite dessiner les pièces de la structure de la borne sur Catia ou un autre logiciel de conception 3D.
On imprimera ensuite les pièces. Lorsque l'impression sera finie, on pourra par la suite les assembler avec un pistolet à colle ou du scotch.
Il est également possible de tester le code du jeu sans la structure pendant l'impression des pièces par exemple.
étape 5
Assemblage de la structure finale, fixation des composants et compte rendu du projet sur le wiki
troubleshouting
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?
Nous avons rencontrés des soucis lors de l'étude du câblage et de la doc car le code que nous avions récupéré pour le jeu