ENIB 2023 : Labyrinthe invisible : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Notre projet)
(Catégories)
 
(5 révisions intermédiaires par un autre utilisateur non affichées)
Ligne 1 : Ligne 1 :
  
 
==photo de l'équipe==
 
==photo de l'équipe==
[[Fichier:PhotoDeGroupeHackathon-min (1).png|600px]]
+
[[Fichier:Labyrinthe.jpg|600px]]
  
 
== Notre projet ==
 
== Notre projet ==
  
 
Nous créons un labyrinthe de LED RGB.
 
Nous créons un labyrinthe de LED RGB.
Le but du joueur est de trouver le chemin vers la sortie en déplaçant son personnage en tapotant la table du côté de la pièce de puzzle vers laquelle il veut se diriger.
+
Le but du joueur est de trouver le chemin vers la sortie en déplaçant son personnage en tapotant la table du côté vers lequel il veut se diriger, tapotement détecté par des capteurs de vibrations. L'objectif est que les murs du labyrinthe se révèlent quand le joueur se heurte à l'un d'entre eux.
Par défaut, toutes les LED sont allumées en blanc, et la LED correspondant à la case où se trouve le joueur est affiché en bleu. Lorsqu'il heurte un mur, la LED correspondante au mur est affichée en rouge. Les points de départ et d'arrivée sont affichée en vert.
 
  
 
Le projet a été grandement ralentit à cause des microcontrôleurs que nous essayons de communiquer avec les rubans de LED. D'abord nous avons essayé d'utiliser le wemosD1 mini mais nous avons obtenues aucun résultats, aucune des LED ne s'allumaient. Ensuite nous sommes passé au ESP32 mais avons rencontrés des problème de mise en place avec lIDE Arduino avant d'enfin passer à l'Arduino micro qui nous a permit d'avoir la réponse souhaitée. Cependant trouver un microcontrôleur adapté non a pris trop de temps, temps que nous avons pas pu passer sur le code qui était déjà ambitieux.
 
Le projet a été grandement ralentit à cause des microcontrôleurs que nous essayons de communiquer avec les rubans de LED. D'abord nous avons essayé d'utiliser le wemosD1 mini mais nous avons obtenues aucun résultats, aucune des LED ne s'allumaient. Ensuite nous sommes passé au ESP32 mais avons rencontrés des problème de mise en place avec lIDE Arduino avant d'enfin passer à l'Arduino micro qui nous a permit d'avoir la réponse souhaitée. Cependant trouver un microcontrôleur adapté non a pris trop de temps, temps que nous avons pas pu passer sur le code qui était déjà ambitieux.
Ligne 27 : Ligne 26 :
 
* Des boutons
 
* Des boutons
  
==Notre Code==
+
==Notre code==
 
<pre>
 
<pre>
////////////////////////////////
 
// Programme d'apprentissage  //
 
//      de la maitrise        //
 
//    des rubans de led      //
 
////////////////////////////////
 
// basé sur le programme
 
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
 
// Released under the GPLv3 license to match the rest of the
 
// Adafruit NeoPixel library
 
/*
 
                             
 
                                    BROCHAGE                           
 
                                _________________                       
 
                              /    D1 mini    \                     
 
                              |[ ]RST        TX[ ]|                 
 
                              |[ ]A0  -GPIO  RX[ ]|                   
 
                              |[ ]D0-16    5-D1[X]| - data du ruban de led                   
 
                              |[ ]D5-14    4-D2[ ]|                   
 
                              |[ ]D6-12    0-D3[ ]|             
 
                              |[ ]D7-13    2-D4[ ]| LED_BUILTIN         
 
                              |[ ]D8-15    GND[X]| - masse du ruban       
 
                              |[ ]3V3 .      5V[X]| - Alim du ruban       
 
                              |      +---+      |                   
 
                              |_______|USB|_______|   
 
Matériel :
 
- des fils dupont.
 
- un ruban de led
 
- un D1 mini
 
- ...
 
 
Sous licence CC-By-Sa (http://creativecommons.org/licenses/by-nc-sa/3.0/)
 
*/
 
/*
 
  ___
 
/ ___ \
 
|_|  | |
 
    /_/
 
    _  ___  _
 
    |_| |___|_| |_
 
        ___|_  _|
 
        |___| |_|
 
Les petits Débrouillards - Antony Le Goïc-Auffret décembre 2020 - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
 
*/
 
 
 
#include <Adafruit_NeoPixel.h>
 
#include <Adafruit_NeoPixel.h>
  
#define broche        5 // broche GPIO du D1 mini sur laquelle est connecté le ruban
+
int mySensVals[81] = {1,0,0,0,0,0,0,0,0,
 +
0,0,0,0,0,0,0,0,0,
 +
0,0,0,0,0,1,1,0,0,
 +
0,0,0,0,0,1,1,1,0,
 +
0,0,1,1,0,0,0,0,0,
 +
1,1,1,1,0,0,0,0,0,
 +
0,0,0,0,0,1,1,0,0,
 +
0,0,0,0,0,0,0,0,0,
 +
1,1,1,1,1,1,1,1,1};
  
// Nombre de led du ruban ?
+
// Declare a NeoPixel strip with 64 LEDs
#define nbpixels 9
+
#define LED_COUNT 81
 +
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, 6, NEO_GRB + NEO_KHZ800);
  
// Lors de la configuration de la bibliothèque NeoPixel,
+
void setup() {
// nous lui indiquons combien de pixels,
+
   strip.begin();
// et quelle broche utiliser pour envoyer des signaux.
+
   strip.show();
Adafruit_NeoPixel pixels(nbpixels, broche, NEO_GRB + NEO_KHZ800);
+
}
// pour configurer le ruban :
 
// nomDuRuban (nombreDePixels, NumeroDeLaBroche, typeDeRuban)
 
// Les différents types de ruban :
 
//   NEO_KHZ800  800 KHz bitstream (la plupart des produits Neopixel ou références de LED w/WS2812)
 
//   NEO_KHZ400  400 KHz (classic 'v1' (pas v2) FLORA pixels, drivers WS2811)
 
//  NEO_GRB    Pixels cablés pour GRB bitstream (la plupart des produits Neopixel)
 
//  NEO_RGB    Pixels cablés pour RGB bitstream (v1 FLORA pixels, pas les v2)
 
//  NEO_RGBW    Pixels cablés pour RGBW bitstream (produits NeoPixel RGBW)
 
  
#define delai 30 // durée de la pause en millisecondes
+
void setLED(int ledNum, int red, int green, int blue) {
 
+
   strip.setPixelColor(ledNum, red, green, blue);
void setup() {
+
   strip.show();
   pixels.begin();           // INITIALISE l'object ruban NeoPixel
 
   pixels.show();           // éteint tout les pixels aussi vite que possible.
 
  pixels.setBrightness(100); // met la luminosité à 1/5 (max = 255)
 
 
}
 
}
  
 
void loop() {
 
void loop() {
   for(int i=0; i<nbpixels; i++) { // Les pixels sont numérotés de 0 à ...
+
  // Turn on the first LED
     pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // on allume la couleur rouge à fond de la ième led
+
   for (int i = 0; i<80; i = i + 1){
    pixels.setPixelColor(i-1, pixels.Color(200, 0, 0)); // celle d'après est moins allumée
+
     if (mySensVals[i] == 1){
    pixels.setPixelColor(i-2, pixels.Color(150, 0, 0)); // ainsi de suite
+
      setLED(i, 5, 5, 5);
    pixels.setPixelColor(i-3, pixels.Color(100, 0, 0));
+
      }else{
    pixels.setPixelColor(i-4, pixels.Color(50, 0, 0)); 
+
        setLED(i, 0, 0, 0);
    pixels.setPixelColor(i-5, pixels.Color(0, 0, 0)); 
+
        }
    pixels.show();   // met à jour le ruban
+
      
    delay(delai);    // Pause
 
  }
 
 
 
  for(int i=nbpixels; i>-1; i--) { // Les pixels sont numérotés de 0 à ...
 
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
 
    pixels.setPixelColor(i-1, pixels.Color(50, 0, 0));
 
    pixels.setPixelColor(i-2, pixels.Color(100, 0, 0));
 
    pixels.setPixelColor(i-3, pixels.Color(150, 0, 0));
 
     pixels.setPixelColor(i-4, pixels.Color(200, 0, 0)); 
 
    pixels.setPixelColor(i-5, pixels.Color(255, 0, 0));
 
    // pour comprendre, quand i vaut 30, la led 25 est au max, la 26 un peu moins, jusque la numéro 29 qui est éteinte
 
    // ce segment se déplace jusque i=0.
 
    pixels.show();  // met à jour le ruban
 
    delay(delai);    // Pause
 
 
     }
 
     }
 
}
 
}
 
</pre>
 
</pre>
 
 
==Catégories==
 
==Catégories==
  
 
[[Catégorie:Enib2023]]
 
[[Catégorie:Enib2023]]
 +
 +
[[Catégorie:Arduino]]

Version actuelle datée du 15 janvier 2024 à 17:01

photo de l'équipe

Labyrinthe.jpg

Notre projet

Nous créons un labyrinthe de LED RGB. Le but du joueur est de trouver le chemin vers la sortie en déplaçant son personnage en tapotant la table du côté vers lequel il veut se diriger, tapotement détecté par des capteurs de vibrations. L'objectif est que les murs du labyrinthe se révèlent quand le joueur se heurte à l'un d'entre eux.

Le projet a été grandement ralentit à cause des microcontrôleurs que nous essayons de communiquer avec les rubans de LED. D'abord nous avons essayé d'utiliser le wemosD1 mini mais nous avons obtenues aucun résultats, aucune des LED ne s'allumaient. Ensuite nous sommes passé au ESP32 mais avons rencontrés des problème de mise en place avec lIDE Arduino avant d'enfin passer à l'Arduino micro qui nous a permit d'avoir la réponse souhaitée. Cependant trouver un microcontrôleur adapté non a pris trop de temps, temps que nous avons pas pu passer sur le code qui était déjà ambitieux.

En manque de capteur de vibration, nous avons essayé d'utiliser un piezo en inversant son utilisation initiale afin qu'il détecte les vibrations mais notre solution technique n'a pas fonctionnée. Etant donné que nous n'avions pas d'autre capteur de vibration à disposition nous avons choisi de les remplacer par des boutons poussoirs mais n'avons pas eu le temps de les câbler.

Parallèlement nous avons créé un support en bois et carton afin de cacher le câblage ainsi qu'un sticker a but purement esthétique.

Notre matériel

  • Pièce de puzzle
  • Rubans de LED
  • 4 Piezo
  • Arduino Uno
  • Fils conducteurs
  • Scotch
  • Fer à souder
  • Du bois
  • Des boutons

Notre code

#include <Adafruit_NeoPixel.h>

int mySensVals[81] = {1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,0,0,
0,0,0,0,0,1,1,1,0,
0,0,1,1,0,0,0,0,0,
1,1,1,1,0,0,0,0,0,
0,0,0,0,0,1,1,0,0,
0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1};

// Declare a NeoPixel strip with 64 LEDs
#define LED_COUNT 81
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, 6, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show();
}

void setLED(int ledNum, int red, int green, int blue) {
  strip.setPixelColor(ledNum, red, green, blue);
  strip.show();
}

void loop() {
  // Turn on the first LED
  for (int i = 0; i<80; i = i + 1){
    if (mySensVals[i] == 1){
      setLED(i, 5, 5, 5);
      }else{
        setLED(i, 0, 0, 0);
        }
    
    }
}

Catégories