ENIB 2024 : Les zinzins envahisseurs : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(étape 2 : étude du câblage et réalisation du support de l'écran)
(Mettre du code Arduino)
Ligne 31 : Ligne 31 :
 
#include <Arduino_GFX_Library.h>
 
#include <Arduino_GFX_Library.h>
  
 +
/// @file    ArrayOfLedArrays.ino
 +
/// @brief  Set up three LED strips, all running from an array of arrays
 +
/// @example ArrayOfLedArrays.ino
 +
 +
// ArrayOfLedArrays - see https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples for more info on
 +
// using multiple controllers.  In this example, we're going to set up three NEOPIXEL strips on three
 +
// different pins, each strip getting its own CRGB array to be played with, only this time they're going
 +
// to be all parts of an array of arrays.
 +
 +
#include <FastLED.h>
 +
 +
 +
#define NUM_STRIPS 1
 +
#define NUM_LEDS_PER_STRIP 256
 +
CRGB leds[NUM_STRIPS][NUM_LEDS_PER_STRIP];
 +
 +
int position;
 +
int color[3] {0x000000,0x000020,0x200000};
 +
 +
int test[16][16] { \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 2, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, \
 +
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}  \
 +
};
 +
 +
// For mirroring strips, all the "special" stuff happens just in setup.  We
 +
// just addLeds multiple times, once for each strip
 
void setup() {
 
void setup() {
   // put your setup code here, to run once:
+
   // tell FastLED there's 60 NEOPIXEL leds on pin 2
 +
  FastLED.addLeds<NEOPIXEL, 2>(leds[0], NUM_LEDS_PER_STRIP);
  
 +
  // tell FastLED there's 60 NEOPIXEL leds on pin 3
 +
  FastLED.addLeds<NEOPIXEL, 3>(leds[1], NUM_LEDS_PER_STRIP);
 +
 +
  // tell FastLED there's 60 NEOPIXEL leds on pin 4
 +
  FastLED.addLeds<NEOPIXEL, 4>(leds[2], NUM_LEDS_PER_STRIP);
 +
 +
}
 +
 +
void affiche() {
 +
  for(int x = 0; x < 16; x++) {
 +
    for(int y = 0; y < 16;y++){
 +
      if (x%2 == 1){
 +
        position = x*16+y;
 +
      }
 +
      else{
 +
        position = x*16+15-y;
 +
      }
 +
      leds[0][position] = color[test[x][y]];
 +
     
 +
    }
 +
  }
 +
  FastLED.show();
 
}
 
}
 +
  
 
void loop() {
 
void loop() {
   // put your main code here, to run repeatedly:
+
   affiche();
 +
  delay(100);
 +
}
 +
 
  
}
 
  
 
</syntaxhighlight>
 
</syntaxhighlight>

Version du 25 janvier 2024 à 11:55

Titre de la fiche expérience :

description (résumé)

éventuelle photo de l'équipe


Imagewiki bazz.jpg

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 #define PIN 9
 3 #include <Arduino_GFX_Library.h>
 4 
 5 /// @file    ArrayOfLedArrays.ino
 6 /// @brief   Set up three LED strips, all running from an array of arrays
 7 /// @example ArrayOfLedArrays.ino
 8 
 9 // ArrayOfLedArrays - see https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples for more info on
10 // using multiple controllers.  In this example, we're going to set up three NEOPIXEL strips on three
11 // different pins, each strip getting its own CRGB array to be played with, only this time they're going
12 // to be all parts of an array of arrays.
13 
14 #include <FastLED.h>
15 
16 
17 #define NUM_STRIPS 1
18 #define NUM_LEDS_PER_STRIP 256
19 CRGB leds[NUM_STRIPS][NUM_LEDS_PER_STRIP];
20 
21 int position;
22 int color[3] {0x000000,0x000020,0x200000};
23 
24 int test[16][16] { \
25   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
26   {0, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 2, 0, 0}, \
27   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
28   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
29   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
30   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
31   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
32   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
33   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
34   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
35   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
36   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
37   {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, \
38   {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, \
39   {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, \
40   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}  \
41 };
42 
43 // For mirroring strips, all the "special" stuff happens just in setup.  We
44 // just addLeds multiple times, once for each strip
45 void setup() {
46   // tell FastLED there's 60 NEOPIXEL leds on pin 2
47   FastLED.addLeds<NEOPIXEL, 2>(leds[0], NUM_LEDS_PER_STRIP);
48 
49   // tell FastLED there's 60 NEOPIXEL leds on pin 3
50   FastLED.addLeds<NEOPIXEL, 3>(leds[1], NUM_LEDS_PER_STRIP);
51 
52   // tell FastLED there's 60 NEOPIXEL leds on pin 4
53   FastLED.addLeds<NEOPIXEL, 4>(leds[2], NUM_LEDS_PER_STRIP);
54 
55 }
56 
57 void affiche() {
58   for(int x = 0; x < 16; x++) {
59     for(int y = 0; y < 16;y++){
60       if (x%2 == 1){
61         position = x*16+y;
62       }
63       else{
64         position = x*16+15-y;
65       }
66       leds[0][position] = color[test[x][y]];
67       
68     }
69   }
70   FastLED.show();
71 }
72 
73 
74 void loop() {
75   affiche();
76   delay(100);
77 }

étapes de fabrication

indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)

  1. É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.

Maquette bazz.jpg

é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.
Schéma câblage basile.PNG

étape 3 : Codage du jeu

Codage du jeu en Arduino

étape 4

Dessin des pièces sur Catia et Mise en plan pour découpeuse 3D. et tests du jeu sans la structure en parallèle

é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

Sources et documentation complémentaire

ne pas modifier sous cette ligne