Fort Boyard : Jeu des bâtonnets (avec Arduino)

De Wikidebrouillard.

m
Ligne 4 : Ligne 4 :
=='''Présentation de l'expérience'''==
=='''Présentation de l'expérience'''==
-
Vous aussi, jouez au jeu des bâtonnets, le fameux jeu culte de Fort Boyard, en utilisant votre Arduino. 11 bâtonnets sont disposés en ligne. 2 joueurs face à face retirent tour à tour une, deux ou trois bâtonnets. Le joueur qui a le malheur de retirer le dernier perdra la partie.
+
 
 +
Vous aussi, jouez au jeu des bâtonnets, le fameux jeu culte de Fort Boyard, en utilisant votre Arduino. 11 bâtonnets sont disposés en ligne. 2 joueurs face à face retirent tour à tour un, deux ou trois bâtonnets. Le joueur qui aura le malheur de retirer le dernier perdra la partie.
== '''Matériel''' ==
== '''Matériel''' ==
-
→ 1 ordinateur,
 
-
logiciels : logiciel Arduino (http://arduino.cc/en/Main/Software)
 
-
→ 1 plaque Labdec,
+
* [[Image:computer.jpg|50px]] Un ordinateur avec le logiciel Arduino (http://arduino.cc/en/Main/Software)
-
→ 12 résistance de 150 ohm,
+
* [[Image:Arduino.jpg|50px]] Un Arduino UNO
-
→ 12 LED  3mm,
+
* [[Image:Breadboard.jpg|50px]] Une plaque Labdec
-
→ 20 fils de 10cm,
+
* [[Image:Resistance.jpg|50px]] 12 résistances de 150 ohm
-
→ 1 Arduino UNO,
+
* [[Image:DEL.png|50px]] 12 LED 3mm
 +
 
 +
* [[Image:Fils1.jpg|50px]] 20 fils de 10cm
 +
 
 +
* [[Image:Bp.jpg|50px]] 6 boutons poussoirs
-
→ 6 boutons poussoirs.
 
== '''L'expérience''' ==
== '''L'expérience''' ==
-
L'expérience est divisée en 2 parties.  Une partie programmation du microcontroleur sur ordinateur et une autre partie câblage où l'on va concevoir le montage sur la plaque Labdec.
 
-
La programmation
+
=== '''La programmation''' ===
 +
 
 +
Un micro-contrôleur est un circuit imprimé programmable via un pc, pouvant communiquer avec des appareils externes (moteurs, diodes... en sortie et capteurs en entrée). Il s'agit ici d'activer ou non les sorties, suivant les évènements en entrée ou les paramètres internes.
-
Un microcontroleur est un circuit imprimé programmable via un pc et pouvant communiquer avec des appareil externes (moteurs, diodes...en sortie et capteurs en entrée). Il s'agit donc dans la partie programmation d'activer ou non les sorties, suivant les évènements en entrée ou les paramètres internes.
+
* Démarrer le logiciel Arduino
-
Lancer votre PC et lancer le logiciel Arduino
+
* Copier dans le logiciel le programme ci-dessous, puis aller dans « édition » et cliquer sur « téléversement »
-
Copier coller le programme ci-dessous
+
-
Aller dans « édition » et cliquer sur « téléversement »
+
Voici le code :
Voici le code :
Ligne 40 : Ligne 41 :
int i;  //Utile pour les boucles
int i;  //Utile pour les boucles
-
//Les diodes sont stockees en memoire dans un tableau
+
//Les diodes sont stockées en mémoire dans un tableau
int TABLEAUDIODE[12]={2,3,4,5,6,7,8,9,10,11,12,13};
int TABLEAUDIODE[12]={2,3,4,5,6,7,8,9,10,11,12,13};
-
//On associe les boutons en entree
+
//On associe les boutons en entrée
int BOUTON14 = 14; //
int BOUTON14 = 14; //
int BOUTON15 = 15; //
int BOUTON15 = 15; //
Ligne 51 : Ligne 52 :
int BOUTON19 = 19; //
int BOUTON19 = 19; //
-
//Ces variables servent a rendre les verification plus claires
+
//Ces variables servent à rendre les vérifications plus claires
int APPUI    = 1;
int APPUI    = 1;
int PAS_APPUI = 0;
int PAS_APPUI = 0;
Ligne 64 : Ligne 65 :
//Variables variables
//Variables variables
-
int nbr=13; //Nombre de batons restants
+
int nbr=13; //Nombre de bâtons restants
-
int ordre=1; //A qui c'est de jouer ? 1 : Joueur 1, 2 : Joueur 2
+
int ordre=1; //À qui c'est de jouer ? 1 : Joueur 1, 2 : Joueur 2
-
void setup()  { // debut de la fonction setup()
+
void setup()  { // dÉbut de la fonction setup()
   // --- ici instructions à exécuter au démarrage ---  
   // --- ici instructions à exécuter au démarrage ---  
Ligne 90 : Ligne 91 :
-
//Au début du jeu, toutes les diodes sont allumees
+
//Au début du jeu, toutes les diodes sont allumÉes
digitalWrite(TABLEAUDIODE[0],HIGH);
digitalWrite(TABLEAUDIODE[0],HIGH);
Ligne 125 : Ligne 126 :
   if (ETAT_BOUTON14 == APPUI)&&(ordre == 1))
   if (ETAT_BOUTON14 == APPUI)&&(ordre == 1))
   {
   {
-
     //Retirer 1 baton
+
     //Retirer 1 bâton
-
     nbr-=1;  //Le nombre de batons est diminue de 1
+
     nbr-=1;  //Le nombre de bâtons est diminué de 1
     ordre=2; //C'est au joueur 2 de jouer
     ordre=2; //C'est au joueur 2 de jouer
   }
   }
Ligne 132 : Ligne 133 :
   if ((ETAT_BOUTON15 == APPUI)&&(ordre == 1))
   if ((ETAT_BOUTON15 == APPUI)&&(ordre == 1))
   {
   {
-
     //Retirer 2 batons
+
     //Retirer 2 bâtons
-
     nbr-=2;  //Le nombre de batons est diminue de 1
+
     nbr-=2;  //Le nombre de bâtons est diminué de 1
     ordre=2; //C'est au joueur 2 de jouer
     ordre=2; //C'est au joueur 2 de jouer
   }
   }
Ligne 139 : Ligne 140 :
   if ((ETAT_BOUTON16 == APPUI)&&(ordre == 1))
   if ((ETAT_BOUTON16 == APPUI)&&(ordre == 1))
   {
   {
-
     //Retirer 3 batons
+
     //Retirer 3 bâtons
-
     nbr-=3;  //Le nombre de batons est diminue de 3
+
     nbr-=3;  //Le nombre de bâtons est diminué de 3
     ordre=2; //C'est au joueur 2 de jouer
     ordre=2; //C'est au joueur 2 de jouer
   }
   }
Ligne 148 : Ligne 149 :
   if ((ETAT_BOUTON17 == APPUI)&&(ordre == 2))
   if ((ETAT_BOUTON17 == APPUI)&&(ordre == 2))
   {
   {
-
     //Retirer 1 baton
+
     //Retirer 1 bâton
-
     nbr-=1;  //Le nombre de batons est diminue de 1
+
     nbr-=1;  //Le nombre de bâtons est diminue de 1
     ordre=1; //C'est au joueur 1 de jouer  
     ordre=1; //C'est au joueur 1 de jouer  
   }
   }
Ligne 155 : Ligne 156 :
   if ((ETAT_BOUTON18 == APPUI)&&(ordre == 2))
   if ((ETAT_BOUTON18 == APPUI)&&(ordre == 2))
   {
   {
-
     //Retirer 2 batons
+
     //Retirer 2 bâtons
-
     nbr-=2;  //Le nombre de batons est diminue de 2
+
     nbr-=2;  //Le nombre de bâtons est diminué de 2
     ordre=1; //C'est au joueur 1 de jouer
     ordre=1; //C'est au joueur 1 de jouer
   }
   }
Ligne 162 : Ligne 163 :
   if ((ETAT_BOUTON19 == APPUI)&&(ordre == 2))
   if ((ETAT_BOUTON19 == APPUI)&&(ordre == 2))
   {
   {
-
     //Retirer 3 batons
+
     //Retirer 3 bâtons
-
     nbr-=3;  //Le nombre de batons est diminue de 3
+
     nbr-=3;  //Le nombre de bâtons est diminué de 3
     ordre=1; //C'est au joueur 1 de jouer
     ordre=1; //C'est au joueur 1 de jouer
   }
   }
Ligne 171 : Ligne 172 :
   for (i=2; i++; i<nbr)
   for (i=2; i++; i<nbr)
   {
   {
-
     digitalWrite(TABLEAUDIODE[i],HIGH);  //Les batons restants sont allumes
+
     digitalWrite(TABLEAUDIODE[i],HIGH);  //Les bâtons restants sont allumés
   }   
   }   
    
    
   for (i=nbr; i++; i<=13)
   for (i=nbr; i++; i<=13)
   {
   {
-
     digitalWrite(TABLEAUDIODE[i],LOW);  //Les batons retires ne sont pas allumes
+
     digitalWrite(TABLEAUDIODE[i],LOW);  //Les bâtons retirés ne sont pas allumés
   }
   }
    
    
Ligne 183 : Ligne 184 :
</pre>
</pre>
-
Le montage
+
=== '''Le montage''' ===
-
Il suffit de faire le montage sur la plaque Labdec comme ci-dessous (cliquer sur la photo pour avoir le schéma en entier) :
+
Il suffit de faire le montage sur la plaque Labdec comme ci-dessous (cliquer sur la photo pour avoir le schéma en entier) :
[[Fichier:Cablage.png|400px]]
[[Fichier:Cablage.png|400px]]
-
 
-
 
==='''La manipulation'''===
==='''La manipulation'''===
-
Si tout se passe bien, toutes les diodes sont alors allumées. Chaque joueur se voit alors attribuer 3 boutons qui éteindront respectivement 1une, deux ou trois LED. Les LED sont des représentations symboliques des petits bâtons autrement appelés bâtonnets. Le joueur qui éteindra la dernière source de lumière visible sur la plaque Labdec perdra immédiatement la manche. Il suffit d'appuyer sur le bouton reset de l'Arduino pour relancer une manche.
 
 +
Si tout se passe bien, toutes les diodes sont alors allumées. Chaque joueur se voit attribuer 3 boutons qui éteindront respectivement une, deux ou trois LED. Les LED sont des représentations symboliques des bâtonnets. Le joueur qui éteindra la dernière source de lumière visible sur la plaque Labdec perdra immédiatement la manche. Il suffit d'appuyer sur le bouton reset de l'Arduino pour relancer une manche.
 +
==='''Que voit-on ?'''===
-
==='''Que voit-on ?===
+
Les LED s'éteignent tour à tour lorsque l'on appuie sur un bouton. En fonction du bouton appuyé, une deux ou trois LED s'éteignent.
-
Les LED s'éteignent tour à tour lorsque l'on appuie sur un bouton. En fonction du bouton appuyé une deux ou trois led s'éteignent.
+
== '''Explications''' ==
== '''Explications''' ==
==='''De manière simple'''===
==='''De manière simple'''===
-
Le bouton poussoir permet d'envoyer un signal sur une entrée de l'Arduino. Celui-ci l'interprète, grâce au code transmis, et va alors émettre un signal sur ses sorties qui va éteindre ou non les diodes branchés sur celles-ci.
 
 +
Le bouton poussoir permet d'envoyer un signal sur une entrée de l'Arduino. Celui-ci l'interprète grâce au code transmis, et va alors émettre un signal sur ses sorties qui va éteindre ou non les diodes branchées sur celles-ci.
L'électron qui est allé voir Arduino a été bloqué par un bouton poussoir. En appuyant dessus, je lui permet de passer.
L'électron qui est allé voir Arduino a été bloqué par un bouton poussoir. En appuyant dessus, je lui permet de passer.
Ligne 209 : Ligne 208 :
"L'électron va taper à la porte de monsieur diode :  
"L'électron va taper à la porte de monsieur diode :  
« - Que tu es beau quand tu t'illumines !
« - Que tu es beau quand tu t'illumines !
-
-Mais voyons électron, si tu veux que je m'illumine, tu dois marcher dans l'autre sens ! »
+
- Mais voyons électron, si tu veux que je m'illumine, tu dois marcher dans l'autre sens ! »
Ainsi, l'électron fit demi-tour et la diode brilla de mille feux."
Ainsi, l'électron fit demi-tour et la diode brilla de mille feux."
-
=== '''Questions sans réponses''' ===
+
== '''Allons plus loin dans l'explication''' ==
-
Aucune
+
 
 +
Nous avons écrit un programme sur un ordinateur, qui est traduit et envoyé à l'Arduino dans un langage machine qu'il peut comprendre.
 +
 
 +
== '''Liens avec d'autres expériences''' ==
-
=== '''Allons plus loin dans l'explication''' ===
+
=== '''Expériences sur Wikidébrouillard''' ===
-
Nous avons écris un programme sur un ordinateur qui va être traduit et envoyé à l'Arduino dans un langage machine qu'il va pouvoir comprendre.
+
-
== '''Lieux propices à sa réalisation''' ==
+
[http://www.wikidebrouillard.org/index.php/Cat%C3%A9gorie:Arduino Catégorie Arduino ]
-
Le matériel est trouvable sur des sites internet de ventes de produit électronique
+
-
Il faut être proche d'une prise.  
+
=='''Catégories'''==
=='''Catégories'''==
Ligne 229 : Ligne 228 :
[[Catégorie:informatique]]
[[Catégorie:informatique]]
[[Catégorie:Vidéo à réaliser]]
[[Catégorie:Vidéo à réaliser]]
-
[[Catégorie:Orthographe et style à corriger]]
 
[[Catégorie:Contenus à développer]]
[[Catégorie:Contenus à développer]]
[[Catégorie:Fiche à Valider]]
[[Catégorie:Fiche à Valider]]
[[Catégorie:expérience]]
[[Catégorie:expérience]]

Version du 27 février 2013 à 16:13

Article incomplet en cours de rédaction
La vidéo "Fort Boyard : Jeu des bâtonnets (avec Arduino)"


Sommaire

Présentation de l'expérience

Vous aussi, jouez au jeu des bâtonnets, le fameux jeu culte de Fort Boyard, en utilisant votre Arduino. 11 bâtonnets sont disposés en ligne. 2 joueurs face à face retirent tour à tour un, deux ou trois bâtonnets. Le joueur qui aura le malheur de retirer le dernier perdra la partie.

Matériel

  • Un Arduino UNO
  • Une plaque Labdec
  • 12 résistances de 150 ohm
  • 12 LED 3mm
  • 20 fils de 10cm
  • 6 boutons poussoirs

L'expérience

La programmation

Un micro-contrôleur est un circuit imprimé programmable via un pc, pouvant communiquer avec des appareils externes (moteurs, diodes... en sortie et capteurs en entrée). Il s'agit ici d'activer ou non les sorties, suivant les évènements en entrée ou les paramètres internes.

  • Démarrer le logiciel Arduino
  • Copier dans le logiciel le programme ci-dessous, puis aller dans « édition » et cliquer sur « téléversement »

Voici le code :

// --- Programme Arduino ---
//Projet Baton
//par : Floran Masson, Kristen Joie, Kévin Jan, Alexandre Devalavieille, Josselin Kerdraon

int i;   //Utile pour les boucles

//Les diodes sont stockées en mémoire dans un tableau
int TABLEAUDIODE[12]={2,3,4,5,6,7,8,9,10,11,12,13};

//On associe les boutons en entrée
int BOUTON14 = 14; //
int BOUTON15 = 15; //
int BOUTON16 = 16; //
int BOUTON17 = 17; //
int BOUTON18 = 18; //
int BOUTON19 = 19; //

//Ces variables servent à rendre les vérifications plus claires
int APPUI     = 1;
int PAS_APPUI = 0;

//Etat des boutons
int ETAT_BOUTON14;
int ETAT_BOUTON15;
int ETAT_BOUTON16;
int ETAT_BOUTON17;
int ETAT_BOUTON18;
int ETAT_BOUTON19;

//Variables variables
int nbr=13; //Nombre de bâtons restants
int ordre=1; //À qui c'est de jouer ? 1 : Joueur 1, 2 : Joueur 2



void setup()   { // dÉbut de la fonction setup()

  // --- ici instructions à exécuter au démarrage --- 

  // ------- Broches en sortie -------  
  
  for(i=2 ; i++ ; i<=13)
  {
    pinMode(TABLEAUDIODE[i], OUTPUT);    
  }
  
  pinMode(BOUTON14, INPUT); //met le bouton en entree
  pinMode(BOUTON15, INPUT); //met le bouton en entree
  pinMode(BOUTON16, INPUT); //met le bouton en entree
  pinMode(BOUTON17, INPUT); //met le bouton en entree
  pinMode(BOUTON18, INPUT); //met le bouton en entree
  pinMode(BOUTON19, INPUT); //met le bouton en entree
  
  //------- initialisation des LEDs au début = feu 1 au rouge et feu 2 au vert


//Au début du jeu, toutes les diodes sont allumÉes

digitalWrite(TABLEAUDIODE[0],HIGH);
digitalWrite(TABLEAUDIODE[1],HIGH);
digitalWrite(TABLEAUDIODE[2],HIGH);
digitalWrite(TABLEAUDIODE[3],HIGH);
digitalWrite(TABLEAUDIODE[4],HIGH);
digitalWrite(TABLEAUDIODE[5],HIGH);
digitalWrite(TABLEAUDIODE[6],HIGH);
digitalWrite(TABLEAUDIODE[7],HIGH);
digitalWrite(TABLEAUDIODE[8],HIGH);
digitalWrite(TABLEAUDIODE[9],HIGH);
digitalWrite(TABLEAUDIODE[10],HIGH);
digitalWrite(TABLEAUDIODE[11],HIGH);

delay(5000);


} // fin de la fonction setup()


void loop() {
  //permet la lecture des boutons
  ETAT_BOUTON14=digitalRead(BOUTON14); //Joueur A : retirer 1
  ETAT_BOUTON15=digitalRead(BOUTON15); //Joueur A : retirer 2
  ETAT_BOUTON16=digitalRead(BOUTON16); //Joueur A : retirer 3
  ETAT_BOUTON17=digitalRead(BOUTON17); //Joueur B : retirer 1
  ETAT_BOUTON18=digitalRead(BOUTON18); //Joueur B : retirer 2
  ETAT_BOUTON19=digitalRead(BOUTON19); //Joueur B : retirer 3 
  
 
//Joueur A
 
  if (ETAT_BOUTON14 == APPUI)&&(ordre == 1))
  {
    //Retirer 1 bâton
    nbr-=1;  //Le nombre de bâtons est diminué de 1
    ordre=2; //C'est au joueur 2 de jouer
  }

  if ((ETAT_BOUTON15 == APPUI)&&(ordre == 1))
  {
    //Retirer 2 bâtons
    nbr-=2;  //Le nombre de bâtons est diminué de 1
    ordre=2; //C'est au joueur 2 de jouer
  }

  if ((ETAT_BOUTON16 == APPUI)&&(ordre == 1))
  {
    //Retirer 3 bâtons
    nbr-=3;  //Le nombre de bâtons est diminué de 3
    ordre=2; //C'est au joueur 2 de jouer
  }
  
//Joueur B  
  
  if ((ETAT_BOUTON17 == APPUI)&&(ordre == 2))
  {
    //Retirer 1 bâton
    nbr-=1;  //Le nombre de bâtons est diminue de 1
    ordre=1; //C'est au joueur 1 de jouer 
  }

  if ((ETAT_BOUTON18 == APPUI)&&(ordre == 2))
  {
    //Retirer 2 bâtons
    nbr-=2;  //Le nombre de bâtons est diminué de 2
    ordre=1; //C'est au joueur 1 de jouer
  }

  if ((ETAT_BOUTON19 == APPUI)&&(ordre == 2))
  {
    //Retirer 3 bâtons
    nbr-=3;  //Le nombre de bâtons est diminué de 3
    ordre=1; //C'est au joueur 1 de jouer
  }

//Affichage

  for (i=2; i++; i<nbr)
  {
    digitalWrite(TABLEAUDIODE[i],HIGH);  //Les bâtons restants sont allumés
  }  
  
  for (i=nbr; i++; i<=13)
  {
    digitalWrite(TABLEAUDIODE[i],LOW);  //Les bâtons retirés ne sont pas allumés
  }
  
}

Le montage

Il suffit de faire le montage sur la plaque Labdec comme ci-dessous (cliquer sur la photo pour avoir le schéma en entier) :

La manipulation

Si tout se passe bien, toutes les diodes sont alors allumées. Chaque joueur se voit attribuer 3 boutons qui éteindront respectivement une, deux ou trois LED. Les LED sont des représentations symboliques des bâtonnets. Le joueur qui éteindra la dernière source de lumière visible sur la plaque Labdec perdra immédiatement la manche. Il suffit d'appuyer sur le bouton reset de l'Arduino pour relancer une manche.

Que voit-on ?

Les LED s'éteignent tour à tour lorsque l'on appuie sur un bouton. En fonction du bouton appuyé, une deux ou trois LED s'éteignent.

Explications

De manière simple

Le bouton poussoir permet d'envoyer un signal sur une entrée de l'Arduino. Celui-ci l'interprète grâce au code transmis, et va alors émettre un signal sur ses sorties qui va éteindre ou non les diodes branchées sur celles-ci.

L'électron qui est allé voir Arduino a été bloqué par un bouton poussoir. En appuyant dessus, je lui permet de passer.

"L'électron va taper à la porte de monsieur diode : « - Que tu es beau quand tu t'illumines ! - Mais voyons électron, si tu veux que je m'illumine, tu dois marcher dans l'autre sens ! » Ainsi, l'électron fit demi-tour et la diode brilla de mille feux."

Allons plus loin dans l'explication

Nous avons écrit un programme sur un ordinateur, qui est traduit et envoyé à l'Arduino dans un langage machine qu'il peut comprendre.

Liens avec d'autres expériences

Expériences sur Wikidébrouillard

Catégorie Arduino

Catégories

Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraits
AR
CO

Fort Boyard : Jeu des bâtonnets (avec Arduino)

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique