<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elio</id>
		<title>Les Fabriques du Ponant - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elio"/>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Sp%C3%A9cial:Contributions/Elio"/>
		<updated>2026-04-30T23:53:46Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25546</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25546"/>
				<updated>2024-01-25T14:31:49Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Fichiers à joindre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois de chêne / scie à bois/ etaux&lt;br /&gt;
*  petite vis x6&lt;br /&gt;
*  EPI: lunettes / gants&lt;br /&gt;
*  perceuse / tournevis&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
[[Media:Decoupeuse.svg|téléchargez le svg]]&lt;br /&gt;
==code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 60          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 4               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
&lt;br /&gt;
int level = 0;                                                         // Initialisation du jeu&lt;br /&gt;
&lt;br /&gt;
int lev = 0;                                                            // Variable pour sauter la fin du niveau&lt;br /&gt;
&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
unsigned long time = 0;                                                 // Initialisation de la variable globale &amp;quot;time&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(10);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();                                                               // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right();                                                              // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
  //Serial.println(score);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                        // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  if(millis()-time &amp;gt; 100 &amp;amp;&amp;amp; level &amp;lt; NUM_LEVEL){                                                             // Vérification du temps d'appuie bouton pour éviter le rebond&lt;br /&gt;
    time=millis();                                                                    // Mettre à jour le bouton pour le prochain appuie&lt;br /&gt;
    score += (NUM_LED_PER_LEVEL)-2*abs(NUM_LED_PER_LEVEL*level+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
    leds.show();&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
    leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
    level++;                                                                          // Passer au level suivant&lt;br /&gt;
    delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
    led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
    &lt;br /&gt;
    delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(2000);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 3; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
      delay(50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
  score = 0;                                                                        // Réinitialiser le score&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Réinitialiser l'affichage led&lt;br /&gt;
  leds.show();                                                                      // Réinitialiser l'affichage led&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){       &lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
      if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    }                                                                 // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){&lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    //Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Test du programme''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Découpe du bois manuellement''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Decoupeuse.svg&amp;diff=25545</id>
		<title>Fichier:Decoupeuse.svg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Decoupeuse.svg&amp;diff=25545"/>
				<updated>2024-01-25T14:27:50Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25492</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25492"/>
				<updated>2024-01-25T14:03:11Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Fichiers à joindre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois de chêne / scie à bois/ etaux&lt;br /&gt;
*  petite vis x6&lt;br /&gt;
*  EPI: lunettes / gants&lt;br /&gt;
*  perceuse / tournevis&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 60          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 4               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
&lt;br /&gt;
int level = 0;                                                         // Initialisation du jeu&lt;br /&gt;
&lt;br /&gt;
int lev = 0;                                                            // Variable pour sauter la fin du niveau&lt;br /&gt;
&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
unsigned long time = 0;                                                 // Initialisation de la variable globale &amp;quot;time&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(10);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();                                                               // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right();                                                              // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
  //Serial.println(score);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                        // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  if(millis()-time &amp;gt; 100 &amp;amp;&amp;amp; level &amp;lt; NUM_LEVEL){                                                             // Vérification du temps d'appuie bouton pour éviter le rebond&lt;br /&gt;
    time=millis();                                                                    // Mettre à jour le bouton pour le prochain appuie&lt;br /&gt;
    score += (NUM_LED_PER_LEVEL)-2*abs(NUM_LED_PER_LEVEL*level+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
    leds.show();&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
    leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
    level++;                                                                          // Passer au level suivant&lt;br /&gt;
    delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
    led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
    &lt;br /&gt;
    delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(2000);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 3; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
      delay(50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
  score = 0;                                                                        // Réinitialiser le score&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Réinitialiser l'affichage led&lt;br /&gt;
  leds.show();                                                                      // Réinitialiser l'affichage led&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){       &lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
      if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    }                                                                 // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){&lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    //Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Test du programme''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Découpe du bois manuellement''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25489</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25489"/>
				<updated>2024-01-25T14:02:29Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Fichiers à joindre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois de chêne / scie à bois/ etaux&lt;br /&gt;
*  petite vis x6&lt;br /&gt;
*  EPI: lunettes / gants&lt;br /&gt;
*  perceuse / tournevis&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 60          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 4               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
&lt;br /&gt;
int level = 0;                                                         // Initialisation du jeu&lt;br /&gt;
&lt;br /&gt;
int lev = 0;                                                            // Variable pour sauter la fin du niveau&lt;br /&gt;
&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
unsigned long time = 0;                                                 // Initialisation de la variable globale &amp;quot;time&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(10);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();                                                               // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right();                                                              // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
  //Serial.println(score);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                        // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  if(millis()-time &amp;gt; 100 &amp;amp;&amp;amp; level &amp;lt; NUM_LEVEL){                                                             // Vérification du temps d'appuie bouton pour éviter le rebond&lt;br /&gt;
    time=millis();                                                                    // Mettre à jour le bouton pour le prochain appuie&lt;br /&gt;
    score += (NUM_LED_PER_LEVEL)-2*abs(NUM_LED_PER_LEVEL*level+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
    leds.show();&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
    leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
    level++;                                                                          // Passer au level suivant&lt;br /&gt;
    delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
    led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
    &lt;br /&gt;
    delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(2000);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 3; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
      delay(50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
  score = 0;                                                                        // Réinitialiser le score&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Réinitialiser l'affichage led&lt;br /&gt;
  leds.show();                                                                      // Réinitialiser l'affichage led&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){       &lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
      if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    }                                                                 // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){&lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    //Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Test du programme''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Découpe du bois manuellement''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25409</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25409"/>
				<updated>2024-01-25T13:30:34Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Etapes de fabrication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois de chêne / scie à bois/ etaux&lt;br /&gt;
*  petite vis x6&lt;br /&gt;
*  EPI: lunettes / gants&lt;br /&gt;
*  perceuse / tournevis&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 60          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 4               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                         // Initialisation du jeu&lt;br /&gt;
int lev = 0;                                                            // Variable pour sauter la fin du niveau&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
unsigned long time = 0;                                                 // Initialisation de la variable globale &amp;quot;time&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(10);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();                                                               // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right();                                                              // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
  //Serial.println(score);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                        // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  if(millis()-time &amp;gt; 100 &amp;amp;&amp;amp; level &amp;lt; NUM_LEVEL){                                                             // Vérification du temps d'appuie bouton pour éviter le rebond&lt;br /&gt;
    time=millis();                                                                    // Mettre à jour le bouton pour le prochain appuie&lt;br /&gt;
    score += (NUM_LED_PER_LEVEL)-2*abs(NUM_LED_PER_LEVEL*level+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
    leds.show();&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
    leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
    level++;                                                                          // Passer au level suivant&lt;br /&gt;
    delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
    led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
    &lt;br /&gt;
    delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(2000);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 3; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
      delay(50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
  score = 0;                                                                        // Réinitialiser le score&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Réinitialiser l'affichage led&lt;br /&gt;
  leds.show();                                                                      // Réinitialiser l'affichage led&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){       &lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
      if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    }                                                                 // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){&lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    //Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Test du programme''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Découpe du bois manuellement''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25404</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25404"/>
				<updated>2024-01-25T13:27:24Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Mettre du code Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois de chêne / scie à bois/ etaux&lt;br /&gt;
*  petite vis x6&lt;br /&gt;
*  EPI: lunettes / gants&lt;br /&gt;
*  perceuse / tournevis&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 60          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 4               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                         // Initialisation du jeu&lt;br /&gt;
int lev = 0;                                                            // Variable pour sauter la fin du niveau&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
unsigned long time = 0;                                                 // Initialisation de la variable globale &amp;quot;time&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(10);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();                                                               // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right();                                                              // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
  //Serial.println(score);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                        // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  if(millis()-time &amp;gt; 100 &amp;amp;&amp;amp; level &amp;lt; NUM_LEVEL){                                                             // Vérification du temps d'appuie bouton pour éviter le rebond&lt;br /&gt;
    time=millis();                                                                    // Mettre à jour le bouton pour le prochain appuie&lt;br /&gt;
    score += (NUM_LED_PER_LEVEL)-2*abs(NUM_LED_PER_LEVEL*level+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
    leds.show();&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
    leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
    level++;                                                                          // Passer au level suivant&lt;br /&gt;
    delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
    led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
    &lt;br /&gt;
    delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(2000);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 3; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
      delay(50);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
  score = 0;                                                                        // Réinitialiser le score&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Réinitialiser l'affichage led&lt;br /&gt;
  leds.show();                                                                      // Réinitialiser l'affichage led&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){       &lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
      if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    }                                                                 // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){&lt;br /&gt;
    for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
      if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
        end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    //Serial.println(led);&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    if (lev != level){&lt;br /&gt;
        lev++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Test du programme''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Découpe du bois manuellement''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25397</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25397"/>
				<updated>2024-01-25T13:24:00Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Outil et Matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois de chêne / scie à bois/ etaux&lt;br /&gt;
*  petite vis x6&lt;br /&gt;
*  EPI: lunettes / gants&lt;br /&gt;
*  perceuse / tournevis&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Test du programme''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Découpe du bois manuellement''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25337</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25337"/>
				<updated>2024-01-25T11:21:05Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Test du programme''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Découpe du bois manuellement''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25335</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25335"/>
				<updated>2024-01-25T11:20:15Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Test du programme''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25334</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25334"/>
				<updated>2024-01-25T11:20:01Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''test du programme''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25333</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25333"/>
				<updated>2024-01-25T11:19:18Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''schéma avec dimensions''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25332</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25332"/>
				<updated>2024-01-25T11:18:46Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25331</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25331"/>
				<updated>2024-01-25T11:18:25Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''montage plaque''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25330</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25330"/>
				<updated>2024-01-25T11:17:32Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''schéma avec dimensions''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25328</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25328"/>
				<updated>2024-01-25T11:16:41Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25327</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25327"/>
				<updated>2024-01-25T11:16:25Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier: Soudure led.jpg|400px]] || [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''Soudure de la led'' || ''Sens de la led''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25325</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25325"/>
				<updated>2024-01-25T11:14:30Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25323</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25323"/>
				<updated>2024-01-25T11:14:11Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Groupebg.jpg|400px]]]&lt;br /&gt;
|-&lt;br /&gt;
| ''photo du groupe''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25316</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25316"/>
				<updated>2024-01-25T11:10:14Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
*Image1:groupe de travail&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25315</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25315"/>
				<updated>2024-01-25T11:09:49Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
Image1:groupe de travail&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25314</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25314"/>
				<updated>2024-01-25T11:08:11Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* troubleshouting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Problèmes rencontrés et Solutions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25311</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25311"/>
				<updated>2024-01-25T11:07:05Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* troubleshouting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Après quelques test le code contient quelques bug. Solution: Tester et adapter le codes&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25305</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25305"/>
				<updated>2024-01-25T11:04:45Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étapes de fabrication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==Etapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25302</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25302"/>
				<updated>2024-01-25T11:04:15Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* fichiers à joindre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==Fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25301</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25301"/>
				<updated>2024-01-25T11:03:51Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Outil et Matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil à souder&lt;br /&gt;
*  pistolet à colle&lt;br /&gt;
*  petits câbles de connexion&lt;br /&gt;
*  résistance pour led&lt;br /&gt;
*  bois/ scie à bois&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25300</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25300"/>
				<updated>2024-01-25T11:02:37Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* outil et matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outil et Matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  pistolet a colle&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25298</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25298"/>
				<updated>2024-01-25T11:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25296</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25296"/>
				<updated>2024-01-25T11:01:27Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25295</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25295"/>
				<updated>2024-01-25T11:01:12Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* description (résumé) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25293</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25293"/>
				<updated>2024-01-25T11:00:46Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Voici une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25290</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25290"/>
				<updated>2024-01-25T10:59:43Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25286</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25286"/>
				<updated>2024-01-25T10:56:55Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Une démo pour mieux comprendre comment fonctionne le jeu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;https://www.youtube.com/embed/BmxxJo5Vk4c?si=USwnw7a0nQp_TOaV&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25253</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25253"/>
				<updated>2024-01-25T10:29:26Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* troubleshouting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25250</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25250"/>
				<updated>2024-01-25T10:28:24Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* troubleshouting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service. Solution: nous avons pris une autre carte déjà soudée.&lt;br /&gt;
*Deux éléments assez dissipés. Solution: Des taches simples et rapides pour eux&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25239</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25239"/>
				<updated>2024-01-25T10:24:51Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
[[Fichier : Decoupe bois.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25233</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25233"/>
				<updated>2024-01-25T10:23:30Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Test prog.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25231</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25231"/>
				<updated>2024-01-25T10:22:39Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
[Fichier:Test prog.jpg|400px]&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
* [http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement Filtre anti-rebond]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Test_prog.jpg&amp;diff=25224</id>
		<title>Fichier:Test prog.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Test_prog.jpg&amp;diff=25224"/>
				<updated>2024-01-25T10:20:39Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : Test du programme. Résolution des problèmes. Recherche d'amélioration.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test du programme. Résolution des problèmes. Recherche d'amélioration.&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25212</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25212"/>
				<updated>2024-01-25T10:14:45Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaque et la connecter à l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25206</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25206"/>
				<updated>2024-01-25T10:14:00Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de leds en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier: Soudure led.jpg|400px]] [[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaques et connecter la carte a l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25203</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25203"/>
				<updated>2024-01-25T10:13:15Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de led en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaques et connecter la carte a l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Connectique.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25198</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25198"/>
				<updated>2024-01-25T10:11:28Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de led en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Sens led.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaques et connecter la carte a l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Sens_led.jpg&amp;diff=25183</id>
		<title>Fichier:Sens led.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Sens_led.jpg&amp;diff=25183"/>
				<updated>2024-01-25T10:08:27Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : fléchage led&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fléchage led&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Connectique.jpg&amp;diff=25173</id>
		<title>Fichier:Connectique.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Connectique.jpg&amp;diff=25173"/>
				<updated>2024-01-25T10:03:06Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : Relier carte bouton ordinateur&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Relier carte bouton ordinateur&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Decoupe_bois.jpg&amp;diff=25170</id>
		<title>Fichier:Decoupe bois.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Decoupe_bois.jpg&amp;diff=25170"/>
				<updated>2024-01-25T10:01:13Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : Découpe du bois a la scie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Découpe du bois a la scie&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Soudure_led.jpg&amp;diff=25166</id>
		<title>Fichier:Soudure led.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Soudure_led.jpg&amp;diff=25166"/>
				<updated>2024-01-25T09:58:40Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : Soudure des leds en série&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Soudure des leds en série&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25151</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25151"/>
				<updated>2024-01-25T09:49:38Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étapes de fabrication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de led en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaques et connecter la carte a l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25150</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25150"/>
				<updated>2024-01-25T09:49:13Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de led en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaques et connecter la carte a l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
&lt;br /&gt;
*Fabrique de notre support en bois&lt;br /&gt;
&lt;br /&gt;
===étape 5===&lt;br /&gt;
===étape 6===&lt;br /&gt;
===étape 7===&lt;br /&gt;
===étape 8===&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25147</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25147"/>
				<updated>2024-01-25T09:48:35Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de led en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaques et connecter la carte a l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
&lt;br /&gt;
*Téléverser notre programme et le tester/debug/améliorer par rapport au rendu réel.&lt;br /&gt;
&lt;br /&gt;
===étape 4===&lt;br /&gt;
===étape 5===&lt;br /&gt;
===étape 6===&lt;br /&gt;
===étape 7===&lt;br /&gt;
===étape 8===&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25143</id>
		<title>ENIB 2024 : catch the light</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2024_:_catch_the_light&amp;diff=25143"/>
				<updated>2024-01-25T09:46:08Z</updated>
		
		<summary type="html">&lt;p&gt;Elio : /* étape 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
&lt;br /&gt;
Le jeu &amp;quot;catch the light&amp;quot; est un jeu de timing. Une lumière se déplace sur un axe horizontal, et fait des aller retour. Le but est d'appuyer sur le bouton poussoir au bon moment afin de stopper la lumière lorsqu'elle se trouve au centre. Il y a 5 bandes horizontales qui représentent 5 étapes. A chaque étape la lumière se déplace plus vite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Groupebg.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
*  bouton poussoir&lt;br /&gt;
*  carte D1 mini avec Arduino&lt;br /&gt;
*  rubans de led&lt;br /&gt;
*  une solderless breadboard&lt;br /&gt;
*  appareil a souder&lt;br /&gt;
*  colle/scotch&lt;br /&gt;
*  petits cables de connexion&lt;br /&gt;
*  resistance pour led&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;    //Importer la bibliotèque &amp;quot;Adafruit_NeoPixel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define NUM_TOTAL_LED 15          // Nombres total de led&lt;br /&gt;
#define NUM_LED_PER_LEVEL 15      // Nombres de led par level&lt;br /&gt;
#define NUM_LEVEL 1               // Nombres de level&lt;br /&gt;
#define PIN_BUTON 3               // Pin bouton sur la carte&lt;br /&gt;
#define PIN_LED 2                 // Pin led sur la carte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Adafruit_NeoPixel leds(NUM_TOTAL_LED, PIN_LED, NEO_GRB + NEO_KHZ800);   // Activer les leds =&amp;gt; Adafruit_NeoPixel leds(Nombres de leds, pin arduino commandant les leds, type de leds)&lt;br /&gt;
int LED_MIDDLE = NUM_LED_PER_LEVEL/2;                                   // Calcul de la led du milieu&lt;br /&gt;
int level = 0;                                                          // Initialisation du jeu&lt;br /&gt;
int score = 0;                                                          // Initialisation du score&lt;br /&gt;
int delay_level = 300;                                                  // Initialisation de la vitesse de jeu&lt;br /&gt;
int led;                                                                // Implémentation de la variable globale &amp;quot;led&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {                                                          // Fonction d'initialisation du jeu&lt;br /&gt;
  Serial.println(&amp;quot;Begin&amp;quot;);&lt;br /&gt;
  pinMode(PIN_BUTON, INPUT);                                            // Définition de &amp;quot;PIN_BUTON&amp;quot; en tant qu'entrée&lt;br /&gt;
  &lt;br /&gt;
  leds.begin();                                                         // Initialisation des leds&lt;br /&gt;
  leds.setBrightness(255);                                              // Régler la luminosité des leds&lt;br /&gt;
  leds.show();                                                          // Afficher les leds&lt;br /&gt;
  &lt;br /&gt;
  attachInterrupt(digitalPinToInterrupt(PIN_BUTON), bouton, RISING);    // Création d'une interruption à chaque appuie sur le bouton =&amp;gt; attachInterrupt(digitalPinToInterrupt(pin arduino de commande du bouton), fonction associée, type de changement)&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {                                                           // Fonction de boucle du jeu&lt;br /&gt;
  left();&lt;br /&gt;
  Serial.println(&amp;quot;left&amp;quot;);                                                              // Fonction left pour déplacer les leds depuis la gauche&lt;br /&gt;
  right(); &lt;br /&gt;
  Serial.println(&amp;quot;right&amp;quot;);                                                             // Fonction right pour déplacer les leds depuis la droite&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bouton(){                                                                      // Fonction en cas d'appuie sur le bouton&lt;br /&gt;
  score += NUM_LED_PER_LEVEL-2*(int)abs(NUM_LED_PER_LEVEL*level-1+LED_MIDDLE-led);  // Modification du score du joueur&lt;br /&gt;
  &lt;br /&gt;
  leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(0, 0, 0));      // Éteindre la led du milieu&lt;br /&gt;
  leds.setPixelColor(led, leds.Color(0, 0, 255));                                   // Allumer en bleu la led cliquée&lt;br /&gt;
  leds.show();                                                                      // Afficher la led allumée&lt;br /&gt;
  &lt;br /&gt;
  level++;                                                                          // Passer au level suivant&lt;br /&gt;
  delay_level /= 2;                                                                 // Accélérer la vitesse de jeu&lt;br /&gt;
  led = NUM_LED_PER_LEVEL*level;                                                    // Initialiser la led du level suivant&lt;br /&gt;
  delay(100);                                                                       // Attendre 100 ms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void end(){                                                                         // Fonction de fin du jeu&lt;br /&gt;
  leds.fill(leds.Color(0, 0, 0), 0, NUM_TOTAL_LED);                                 // Éteindre toutes les leds&lt;br /&gt;
  leds.fill(leds.Color(255, 0, 0), 0, score);                                       // Afficher le score du joueur&lt;br /&gt;
  leds.show();                                                                      // Afficher le score du joueur&lt;br /&gt;
  delay(500);                                                                       // Attendre 500 ms&lt;br /&gt;
  for(int i = 0; i &amp;lt;= 10; i++){                                                     // Boucle d'affichage des leds de fin&lt;br /&gt;
    for(led = 0; led &amp;lt; NUM_TOTAL_LED; led++){                                       // Boucle d'affichage des leds de fin&lt;br /&gt;
      if(i%2 == 0){                                                                 // Si la boucle est pair&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(0, 0, 0));                               // Afficher la led en blanc&lt;br /&gt;
      }&lt;br /&gt;
      else{                                                                         // Sinon&lt;br /&gt;
        int couleur_1 = random(0, 255);                                             // Valeur aléatoire de rouge&lt;br /&gt;
        int couleur_2 = random(0, 255);                                             // Valeur aléatoire de vert&lt;br /&gt;
        int couleur_3 = random(0, 255);                                             // Valeur aléatoire de bleu&lt;br /&gt;
        leds.setPixelColor(led, leds.Color(couleur_1, couleur_2, couleur_3));       // Afficher la led en fonction des couleurs aléatoires&lt;br /&gt;
      }&lt;br /&gt;
      leds.show();                                                                  // Afficher la leds&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  level = 0;                                                                        // Réinitialiser le jeu&lt;br /&gt;
  delay_level = 300;                                                                // Réinitialiser la vitesse du jeu&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void left(){                                                                        // Fonction permettant de déplacer la led en partant de la gauche&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*level; led &amp;lt; NUM_LED_PER_LEVEL*(level+1)-1; led++){   // Boucle d'affichage des leds en partant de la gauche&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void right(){                                                                       // Fonction permettant de déplacer la led en partant de la droite&lt;br /&gt;
  for(led = NUM_LED_PER_LEVEL*(level+1)-1; led &amp;gt; NUM_LED_PER_LEVEL*level; led--){   // Boucle d'affichage des leds en partant de la droite&lt;br /&gt;
    if(level == NUM_LEVEL){                                                         // Si le level est égal au nombre de level&lt;br /&gt;
      end();                                                                        // Fonction de fin du jeu&lt;br /&gt;
    }&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 100, 0));                                 // Allumer la led qui se déplace&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
    leds.setPixelColor(led, leds.Color(0, 0, 0));                                   // Éteindre la led qui se déplace&lt;br /&gt;
    leds.setPixelColor(NUM_LED_PER_LEVEL*level+LED_MIDDLE, leds.Color(255, 0, 0));  // Allumer la led du milieu&lt;br /&gt;
    leds.show();                                                                    // Afficher les leds&lt;br /&gt;
    delay(delay_level);                                                             // Attendre un certain temps pour créer la vitesse du jeu&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (phot, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
&lt;br /&gt;
*Souder les bandeaux de led en série en faisant attention au sens de fléchage.&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
&lt;br /&gt;
*Faire les branchements sur la plaques et connecter la carte a l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
===étape 4===&lt;br /&gt;
===étape 5===&lt;br /&gt;
===étape 6===&lt;br /&gt;
===étape 7===&lt;br /&gt;
===étape 8===&lt;br /&gt;
&lt;br /&gt;
===troubleshouting===&lt;br /&gt;
quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
*1er code récupéré qui ne fonctionnait pas. Solution: nous avons rédigé notre propre code.&lt;br /&gt;
*Carte D1 hors service.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;/div&gt;</summary>
		<author><name>Elio</name></author>	</entry>

	</feed>