Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 193

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 197

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338
[ Wikidébrouillard ] Jouons au Simon

Jouons au Simon

De Wikidebrouillard.

(Réalisation)
(Réalisation)
Ligne 36 : Ligne 36 :
Pour les non-initiés à la programmation informatique, il ne vous sera pas obligatoire de le comprendre : contentez-vous de le copier. Il est indispensable pour le reste de la manipulation.
Pour les non-initiés à la programmation informatique, il ne vous sera pas obligatoire de le comprendre : contentez-vous de le copier. Il est indispensable pour le reste de la manipulation.
-
<code>else codeSimon.png</code>
+
<code>
 +
<font color="#158518">/*
 +
  Simon
 +
*/</font>
 +
 
 +
<font color="#158518">//---------------------------------------------------------
 +
//Initialisation des leds et boutons poussoirs.</font>
 +
<font color="#f28518">]int</font> led1 = 2;      <font color="#158518">//LED rouge</font>
 +
<font color="#f28518">int</font> led2 = 3;      <font color="#158518">//LED verte</font>
 +
<font color="#f28518">int</font> led3 = 4;      <font color="#158518">//LED bleue</font>
 +
<font color="#f28518">int</font> led4 = 5;      <font color="#158518">//LED jaune</font>
 +
 
 +
<font color="#f28518">]int</font> bouton1 = 6;    <font color="#158518">//Bouton rouge</font>
 +
<font color="#f28518">int</font> bouton2 = 7;    <font color="#158518">//Bouton vert</font>
 +
<font color="#f28518">int</font> bouton3 = 8;    <font color="#158518">//Bouton bleu</font>
 +
<font color="#f28518">int</font> bouton4 = 9;    <font color="#158518">//Bouton jaune</font>
 +
 
 +
<font color="#f28518">int</font> speaker = 10;  <font color="#158518">//Speaker</font>
 +
 
 +
<font color="#158518">//Les numéros correspondent aux numéros d'entrées/sorties.
 +
//Les 0 et 1 sont réservés aux transmissions/réceptions.</font>
 +
 
 +
[color=#7E7E7E]//Fréquences des sons de chaque couleur[/color]
 +
<font color="#f28518">int[/color] son[] = {261, 330, 392, 523};
 +
[color=#7E7E7E]//            Do,  Mi, Sol,  Do[/color]
 +
 
 +
[color=#7E7E7E]//Tableau de séquence à jouer[/color]
 +
<font color="#f28518">int[/color] sequence[50]; [color=#7E7E7E]//Personne ne dépasse jamais le niveau 50...[/color]
 +
 
 +
[color=#7E7E7E]//---------------------------------------------------------[/color]
 +
[color=#7E7E7E]// Routine d'initialisation.[/color]
 +
[color=#7E7E7E]// Le setup sera appelée à chaque démarrage ou reset.[/color]
 +
 
 +
<font color="#f28518">void '''setup'''[/color]()
 +
{
 +
  [color=#7E7E7E]//Initialisation des entrées/sorties[/color]
 +
  <font color="#f28518">pinMode[/color](led1, [color=#006699]OUTPUT[/color]);
 +
  <font color="#f28518">pinMode[/color](led2, [color=#006699]OUTPUT[/color]);
 +
  <font color="#f28518">pinMode[/color](led3, [color=#006699]OUTPUT[/color]);
 +
  <font color="#f28518">pinMode[/color](led4, [color=#006699]OUTPUT[/color]);
 +
  <font color="#f28518">pinMode[/color](bouton1, [color=#006699]INPUT[/color]);
 +
  <font color="#f28518">pinMode[/color](bouton2, [color=#006699]INPUT[/color]);
 +
  <font color="#f28518">pinMode[/color](bouton3, [color=#006699]INPUT[/color]);
 +
  <font color="#f28518">pinMode[/color](bouton4, [color=#006699]INPUT[/color]);
 +
  <font color="#f28518">pinMode[/color](speaker, [color=#006699]OUTPUT[/color]);
 +
}
 +
 
 +
[color=#7E7E7E]//---------------------------------------------------------[/color]
 +
[color=#7E7E7E]// Boucle principale.[/color]
 +
[color=#7E7E7E]// La loop tournera jusqu'à extinction ou reset.[/color]
 +
 
 +
[color=#CC6600]void[/color] [color=#CC6600][b]loop[/b][/color]()
 +
{
 +
  [color=#CC6600]randomSeed[/color]([color=#CC6600]analogRead[/color](A0));
 +
  [color=#7E7E7E]//Nouvelle génération aléatoire basée sur le bruit ambiant d'une patte non utilisée.[/color]
 +
  
 +
  [color=#7E7E7E]//Attente de pression sur une touche.[/color]
 +
  lectureBouton();
 +
  
 +
  [color=#7E7E7E]//Témoin de lancement du jeu.[/color]
 +
  melodieLancement();
 +
  [color=#CC6600]delay[/color](2000);
 +
  
 +
  [color=#7E7E7E]//Début du jeu[/color]
 +
  [color=#CC6600]boolean[/color] gameOver = [color=#CC6600]false[/color];
 +
  [color=#CC6600]int[/color] presse;
 +
  [color=#CC6600]int[/color] niveau = 0;
 +
  [color=#CC6600]while[/color](!gameOver)
 +
  {
 +
    nouvelleNote(niveau);          [color=#7E7E7E]//Rajoute une note à la séquence.[/color]
 +
    jouerSequence(niveau);         [color=#7E7E7E]//Joue la séquence[/color]
 +
    
 +
    [color=#CC6600]for[/color]([color=#CC6600]int[/color] i=0; i<=niveau; i++)  [color=#7E7E7E]//Attend que le joueur tape chaque note de la séquence[/color]
 +
    {
 +
      presse = lectureBouton();    [color=#7E7E7E]//Lecture du bouton appuyé par le joueur[/color]
 +
      jouerNote(presse);           [color=#7E7E7E]//Joue la note du joueur[/color]
 +
      [color=#CC6600]if[/color](presse!=sequence[i])      [color=#7E7E7E]//Si la note est bonne, on continue, sinon GameOver[/color]
 +
      {
 +
        gameOver = [color=#CC6600]true[/color];
 +
        melodieGameOver();
 +
      }
 +
      [color=#CC6600]if[/color](gameOver) {[color=#CC6600]break[/color];}
 +
    }
 +
    niveau++;
 +
    [color=#CC6600]delay[/color](1000);
 +
  }
 +
}
 +
 
 +
[color=#7E7E7E]//---------------------------------------------------------[/color]
 +
[color=#7E7E7E]//Fonction de lecture des boutons.[/color]
 +
  [color=#7E7E7E]//L'arduino vérifie les boutons un par un, mais comme la vitesse d'une vérification[/color]
 +
  [color=#7E7E7E]//est de l'ordre de la nanoseconde, l'ensemble est presque instantané.[/color]
 +
[color=#CC6600]int[/color] lectureBouton() [color=#7E7E7E]//V1[/color]
 +
{
 +
  [color=#CC6600]int[/color] boutonPresse = 0;
 +
  
 +
  [color=#CC6600]while[/color](!boutonPresse)
 +
  {
 +
    [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](bouton1))
 +
    {
 +
      boutonPresse = 1;
 +
    }
 +
    [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](bouton2))
 +
    {
 +
      boutonPresse = 2;
 +
    }
 +
    [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](bouton3))
 +
    {
 +
      boutonPresse = 3;
 +
    }
 +
    [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](bouton4))
 +
    {
 +
      boutonPresse = 4;
 +
    }
 +
  }
 +
  [color=#CC6600]return[/color] boutonPresse;
 +
}
 +
 
 +
[color=#7E7E7E]//---------------------------------------------------------[/color]
 +
[color=#7E7E7E]//Fonction d'allumage et de son[/color]
 +
[color=#CC6600]void[/color] jouerNote([color=#CC6600]int[/color] numero)
 +
{
 +
  [color=#CC6600]switch[/color](numero)
 +
  {
 +
    [color=#CC6600]case[/color] 1:
 +
      [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);
 +
      [color=#CC6600]break[/color];
 +
    [color=#CC6600]case[/color] 2:
 +
      [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);
 +
      [color=#CC6600]break[/color];
 +
    [color=#CC6600]case[/color] 3:
 +
      [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);
 +
      [color=#CC6600]break[/color];
 +
    [color=#CC6600]case[/color] 4:
 +
      [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);
 +
      [color=#CC6600]break[/color];
 +
  }
 +
  [color=#CC6600]tone[/color](speaker, son[numero-1]); [color=#7E7E7E]//Le tableau commence à 0 (non à 1)[/color]
 +
  
 +
  [color=#CC6600]delay[/color](1000);
 +
  
 +
  [color=#CC6600]digitalWrite[/color](led1, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led2, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led3, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led4, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]noTone[/color](speaker);
 +
  
 +
  [color=#CC6600]delay[/color](500);
 +
}
 +
 
 +
[color=#7E7E7E]//---------------------------------------------------------[/color]
 +
[color=#7E7E7E]//Joue toute la séquence[/color]
 +
[color=#CC6600]void[/color] jouerSequence([color=#CC6600]int[/color] niveau)
 +
{
 +
  [color=#CC6600]for[/color]([color=#CC6600]int[/color] i=0; i<=niveau; i++)
 +
  {
 +
    jouerNote(sequence[i]);
 +
  }
 +
}
 +
 
 +
[color=#7E7E7E]//---------------------------------------------------------[/color]
 +
[color=#7E7E7E]//Nouvelle note aléatoire[/color]
 +
[color=#CC6600]void[/color] nouvelleNote([color=#CC6600]int[/color] niveau)
 +
{
 +
  sequence[niveau] = ([color=#CC6600]int[/color])[color=#CC6600]random[/color](1,5);
 +
}
 +
 
 +
[color=#7E7E7E]//---------------------------------------------------------[/color]
 +
[color=#7E7E7E]//Témoin lancement (petite séquence lumineuse)[/color]
 +
[color=#CC6600]void[/color] melodieLancement()
 +
{
 +
  [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]tone[/color](speaker, son[0]);
 +
  [color=#CC6600]delay[/color](300);
 +
  [color=#CC6600]tone[/color](speaker, son[1]);
 +
  [color=#CC6600]delay[/color](300);
 +
  [color=#CC6600]tone[/color](speaker, son[2]);
 +
  [color=#CC6600]delay[/color](300);
 +
  [color=#CC6600]tone[/color](speaker, son[3]);
 +
  [color=#CC6600]delay[/color](300);
 +
  [color=#CC6600]digitalWrite[/color](led1, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led2, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led3, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led4, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]noTone[/color](speaker);
 +
}
 +
 
 +
[color=#7E7E7E]//---------------------------------------------------------[/color]
 +
[color=#7E7E7E]//Témoin Game Over[/color]
 +
[color=#CC6600]void[/color] melodieGameOver()
 +
{
 +
  [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]tone[/color](speaker, son[3]);
 +
  [color=#CC6600]delay[/color](150);
 +
  [color=#CC6600]digitalWrite[/color](led1, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led2, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led3, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led4, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]delay[/color](150);
 +
  [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]tone[/color](speaker, son[2]);
 +
  [color=#CC6600]delay[/color](150);
 +
  [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]tone[/color](speaker, son[1]);
 +
  [color=#CC6600]delay[/color](150);
 +
  [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);
 +
  [color=#CC6600]tone[/color](speaker, son[0]);
 +
  [color=#CC6600]delay[/color](150);
 +
  [color=#CC6600]digitalWrite[/color](led1, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led2, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led3, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]digitalWrite[/color](led4, [color=#006699]LOW[/color]);
 +
  [color=#CC6600]delay[/color](500);
 +
  [color=#CC6600]noTone[/color](speaker);
 +
}
 +
</code>
Ouvrez dès à présent le logiciel Arduino. Un fenêtre s'ouvre comme dans la capture d'écran ci-dessous :
Ouvrez dès à présent le logiciel Arduino. Un fenêtre s'ouvre comme dans la capture d'écran ci-dessous :
Ligne 48 : Ligne 278 :
Une fois cette étape effectuée, il ne doit pas y avoir de message d'erreur dans la partie noire du logiciel (en bas de la fenêtre). Si vous êtes dans ce cas, vérifiez que vous aviez copié proprement et complètement le code et recommencez la vérification.<br />
Une fois cette étape effectuée, il ne doit pas y avoir de message d'erreur dans la partie noire du logiciel (en bas de la fenêtre). Si vous êtes dans ce cas, vérifiez que vous aviez copié proprement et complètement le code et recommencez la vérification.<br />
-
Il se peut également que vous rencontriez un problème de connexion (ex : "Port série non trouvé"), auquel cas il s'agit d'un problème avec l'USB ou le Driver. Rendez vous sur [http://arduino.cc/fr/Main/DebuterInstallationWindows cette page] pour plus d'information.
+
Il se peut également que vous rencontriez un problème de connexion (ex : "Port série non trouvé"), auquel cas il s'agit d'un problème avec l'USB ou le Driver. Rendez vous sur [http://arduino.cc/fr/Main/DebuterInstallationWindows cette page] pour plus d'information.<br />
Si rien aucun message d'alerte de s'affiche, c'est que le programme à bien été envoyé !
Si rien aucun message d'alerte de s'affiche, c'est que le programme à bien été envoyé !
   
   

Version du 14 janvier 2013 à 19:26

Article incomplet en cours de rédaction
Modèle:Vidéo


Sommaire

Présentation de l'expérience

Refabriquez le célèbre jeu mémoriel Simon et testez votre mémoire en tentant de reproduire une séquence lumineuse et sonore de plus en plus longue.

Matériel

  • 1 ARDUINO
  • Le logiciel Arduino
  • 4 LED de couleurs différentes
  • 8 résistances de 100kΩ
  • 1 buzzer
  • 1 Plaque de montage électrique (LABTEC)
  • 12 fils élèctrique environ
  • 1 ordinateur

L'expérience

Ce tutoriel se divise en deux phases :

  • Le montage du circuit sur la plaque de montage
  • Le chargement du programme dans l'ARDUINO via l'ordinateur

Réalisation

L’élaboration du Simon se divise en deux parties : le câblage du circuit et le chargement du programme dans l'Arduino.
Nous commencerons par le câblage :

Câblez tout d'abord le circuit imprimé en vous référant à l'image ci-dessous.

Fichier:Cablâgeplaque.png

Connectez maintenant votre montage sur l'Arduino, en reprenant le schéma suivant :

Fichier:Cablâgeplaque&arduino.png

Maintenant que votre Simon est câblé, il faut lui donner son programme.

Ci-dessous se trouve le code du jeu qu'il faudra envoyer dans le circuit. C'est lui qui fait l'interaction des composants entre eux et définit le jeu.
Pour les non-initiés à la programmation informatique, il ne vous sera pas obligatoire de le comprendre : contentez-vous de le copier. Il est indispensable pour le reste de la manipulation.

/*   Simon

  • /

//--------------------------------------------------------- //Initialisation des leds et boutons poussoirs. ]int led1 = 2; //LED rouge int led2 = 3; //LED verte int led3 = 4; //LED bleue int led4 = 5; //LED jaune

]int bouton1 = 6; //Bouton rouge int bouton2 = 7; //Bouton vert int bouton3 = 8; //Bouton bleu int bouton4 = 9; //Bouton jaune

int speaker = 10; //Speaker

//Les numéros correspondent aux numéros d'entrées/sorties. //Les 0 et 1 sont réservés aux transmissions/réceptions.

[color=#7E7E7E]//Fréquences des sons de chaque couleur[/color] int[/color] son[] = {261, 330, 392, 523}; [color=#7E7E7E]//            Do,  Mi, Sol,  Do[/color]

[color=#7E7E7E]//Tableau de séquence à jouer[/color] int[/color] sequence[50]; [color=#7E7E7E]//Personne ne dépasse jamais le niveau 50...[/color]

[color=#7E7E7E]//---------------------------------------------------------[/color] [color=#7E7E7E]// Routine d'initialisation.[/color] [color=#7E7E7E]// Le setup sera appelée à chaque démarrage ou reset.[/color]

void setup[/color]() {   [color=#7E7E7E]//Initialisation des entrées/sorties[/color]   pinMode[/color](led1, [color=#006699]OUTPUT[/color]);   pinMode[/color](led2, [color=#006699]OUTPUT[/color]);   pinMode[/color](led3, [color=#006699]OUTPUT[/color]);   pinMode[/color](led4, [color=#006699]OUTPUT[/color]);   pinMode[/color](bouton1, [color=#006699]INPUT[/color]);   pinMode[/color](bouton2, [color=#006699]INPUT[/color]);   pinMode[/color](bouton3, [color=#006699]INPUT[/color]);   pinMode[/color](bouton4, [color=#006699]INPUT[/color]);   pinMode[/color](speaker, [color=#006699]OUTPUT[/color]); }

[color=#7E7E7E]//---------------------------------------------------------[/color] [color=#7E7E7E]// Boucle principale.[/color] [color=#7E7E7E]// La loop tournera jusqu'à extinction ou reset.[/color]

[color=#CC6600]void[/color] [color=#CC6600][b]loop[/b][/color]() {   [color=#CC6600]randomSeed[/color]([color=#CC6600]analogRead[/color](A0));   [color=#7E7E7E]//Nouvelle génération aléatoire basée sur le bruit ambiant d'une patte non utilisée.[/color]      [color=#7E7E7E]//Attente de pression sur une touche.[/color]   lectureBouton();      [color=#7E7E7E]//Témoin de lancement du jeu.[/color]   melodieLancement();   [color=#CC6600]delay[/color](2000);      [color=#7E7E7E]//Début du jeu[/color]   [color=#CC6600]boolean[/color] gameOver = [color=#CC6600]false[/color];   [color=#CC6600]int[/color] presse;   [color=#CC6600]int[/color] niveau = 0;   [color=#CC6600]while[/color](!gameOver)   {     nouvelleNote(niveau);          [color=#7E7E7E]//Rajoute une note à la séquence.[/color]     jouerSequence(niveau);         [color=#7E7E7E]//Joue la séquence[/color]          [color=#CC6600]for[/color]([color=#CC6600]int[/color] i=0; i<=niveau; i++) [color=#7E7E7E]//Attend que le joueur tape chaque note de la séquence[/color]     {       presse = lectureBouton();    [color=#7E7E7E]//Lecture du bouton appuyé par le joueur[/color]       jouerNote(presse);           [color=#7E7E7E]//Joue la note du joueur[/color]       [color=#CC6600]if[/color](presse!=sequence[i]) [color=#7E7E7E]//Si la note est bonne, on continue, sinon GameOver[/color]       {         gameOver = [color=#CC6600]true[/color];         melodieGameOver();       }       [color=#CC6600]if[/color](gameOver) {[color=#CC6600]break[/color];}     }     niveau++;     [color=#CC6600]delay[/color](1000);   } }

[color=#7E7E7E]//---------------------------------------------------------[/color] [color=#7E7E7E]//Fonction de lecture des boutons.[/color]   [color=#7E7E7E]//L'arduino vérifie les boutons un par un, mais comme la vitesse d'une vérification[/color]   [color=#7E7E7E]//est de l'ordre de la nanoseconde, l'ensemble est presque instantané.[/color] [color=#CC6600]int[/color] lectureBouton() [color=#7E7E7E]//V1[/color] {   [color=#CC6600]int[/color] boutonPresse = 0;      [color=#CC6600]while[/color](!boutonPresse)   {     [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](bouton1))     {       boutonPresse = 1;     }     [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](bouton2))     {       boutonPresse = 2;     }     [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](bouton3))     {       boutonPresse = 3;     }     [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](bouton4))     {       boutonPresse = 4;     }   }   [color=#CC6600]return[/color] boutonPresse; }

[color=#7E7E7E]//---------------------------------------------------------[/color] [color=#7E7E7E]//Fonction d'allumage et de son[/color] [color=#CC6600]void[/color] jouerNote([color=#CC6600]int[/color] numero) {   [color=#CC6600]switch[/color](numero)   {     [color=#CC6600]case[/color] 1:       [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);       [color=#CC6600]break[/color];     [color=#CC6600]case[/color] 2:       [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);       [color=#CC6600]break[/color];     [color=#CC6600]case[/color] 3:       [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);       [color=#CC6600]break[/color];     [color=#CC6600]case[/color] 4:       [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);       [color=#CC6600]break[/color];   }   [color=#CC6600]tone[/color](speaker, son[numero-1]); [color=#7E7E7E]//Le tableau commence à 0 (non à 1)[/color]      [color=#CC6600]delay[/color](1000);      [color=#CC6600]digitalWrite[/color](led1, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led2, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led3, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led4, [color=#006699]LOW[/color]);   [color=#CC6600]noTone[/color](speaker);      [color=#CC6600]delay[/color](500); }

[color=#7E7E7E]//---------------------------------------------------------[/color] [color=#7E7E7E]//Joue toute la séquence[/color] [color=#CC6600]void[/color] jouerSequence([color=#CC6600]int[/color] niveau) {   [color=#CC6600]for[/color]([color=#CC6600]int[/color] i=0; i<=niveau; i++)   {     jouerNote(sequence[i]);   } }

[color=#7E7E7E]//---------------------------------------------------------[/color] [color=#7E7E7E]//Nouvelle note aléatoire[/color] [color=#CC6600]void[/color] nouvelleNote([color=#CC6600]int[/color] niveau) {   sequence[niveau] = ([color=#CC6600]int[/color])[color=#CC6600]random[/color](1,5); }

[color=#7E7E7E]//---------------------------------------------------------[/color] [color=#7E7E7E]//Témoin lancement (petite séquence lumineuse)[/color] [color=#CC6600]void[/color] melodieLancement() {   [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);   [color=#CC6600]tone[/color](speaker, son[0]);   [color=#CC6600]delay[/color](300);   [color=#CC6600]tone[/color](speaker, son[1]);   [color=#CC6600]delay[/color](300);   [color=#CC6600]tone[/color](speaker, son[2]);   [color=#CC6600]delay[/color](300);   [color=#CC6600]tone[/color](speaker, son[3]);   [color=#CC6600]delay[/color](300);   [color=#CC6600]digitalWrite[/color](led1, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led2, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led3, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led4, [color=#006699]LOW[/color]);   [color=#CC6600]noTone[/color](speaker); }

[color=#7E7E7E]//---------------------------------------------------------[/color] [color=#7E7E7E]//Témoin Game Over[/color] [color=#CC6600]void[/color] melodieGameOver() {   [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);   [color=#CC6600]tone[/color](speaker, son[3]);   [color=#CC6600]delay[/color](150);   [color=#CC6600]digitalWrite[/color](led1, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led2, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led3, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led4, [color=#006699]LOW[/color]);   [color=#CC6600]delay[/color](150);   [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);   [color=#CC6600]tone[/color](speaker, son[2]);   [color=#CC6600]delay[/color](150);   [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);   [color=#CC6600]tone[/color](speaker, son[1]);   [color=#CC6600]delay[/color](150);   [color=#CC6600]digitalWrite[/color](led1, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led2, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led3, [color=#006699]HIGH[/color]);   [color=#CC6600]digitalWrite[/color](led4, [color=#006699]HIGH[/color]);   [color=#CC6600]tone[/color](speaker, son[0]);   [color=#CC6600]delay[/color](150);   [color=#CC6600]digitalWrite[/color](led1, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led2, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led3, [color=#006699]LOW[/color]);   [color=#CC6600]digitalWrite[/color](led4, [color=#006699]LOW[/color]);   [color=#CC6600]delay[/color](500);   [color=#CC6600]noTone[/color](speaker); } </code>

Ouvrez dès à présent le logiciel Arduino. Un fenêtre s'ouvre comme dans la capture d'écran ci-dessous :


Collez votre code, puis enregistrez le sur votre ordinateur.
Banchez ensuite l'Arduino à votre ordinateur avec l'adaptateur USB et cliquez sur le bouton "Téléverser" comme sur l'exemple ci-dessous.


Une fois cette étape effectuée, il ne doit pas y avoir de message d'erreur dans la partie noire du logiciel (en bas de la fenêtre). Si vous êtes dans ce cas, vérifiez que vous aviez copié proprement et complètement le code et recommencez la vérification.
Il se peut également que vous rencontriez un problème de connexion (ex : "Port série non trouvé"), auquel cas il s'agit d'un problème avec l'USB ou le Driver. Rendez vous sur cette page pour plus d'information.
Si rien aucun message d'alerte de s'affiche, c'est que le programme à bien été envoyé !

Vous venez de fabriquer votre Simon. Rendez-vous à l'étape suivante pour comprendre comment faire fonctionner le jeu !

Manipulation

• Appuyez sur n'importe quel bouton poussoir pour que le jeu démarre.
• Les LEDs s'allument et une petite mélodie est jouée pour annoncer le début de la partie.
• Une LED s'allume, puis c'est votre tour d'appuyez sur le bouton correspondant.
• Si c'est bon, deux LEDs s'allumerons successivement. Reproduisez la séquence et celle-ci sera de plus en plus longue au fur et mesure que vous progresserez.
• Si vous vous trompez, les LEDs clignoteront et une autre mélodie vous annoncera que la partie est terminée.
• Appuyez à nouveau sur n'importe quel bouton pour rejouer une partie.

Astuce

Pour faire un montage propre, sans emmêler les câbles, coupez les au plus court avec une pince coupante et une pince à dénuder. Utilisez ensuite une pince plate pour placer vos composants.

Explications

De manière simple

Pour comprendre le montage du jeu simon, il faut imaginer que l'arduino est une sorte de cerveau dont le fonctionnement peut-être commandé. Pour permettre ceci, on utilise le code : c'est grâce à lui que l'arduino sait où est ce que les composants sont connectés et quelles sont les règles du jeu. Sans lui, l'arduino ne sait pas quoi faire et ne peut même pas savoir si le joueur appuie sur un bouton. C'est là qu'est l’intérêt du code pour faire fonctionner le jeu. Le circuit électronique permet de relier les différentes lumières et boutons entre eux. Sans lui, il n'y a pas de lien entre les boutons et les lumières du jeu qui perd tout son sens. De plus, il permet de faire un lien entre le "cerveau" arduino et la plateforme de jeu (voir le schéma de câblage de la partie réalisation). C'est une sorte de lien entre les deux différentes parties du circuit.

Questions sans réponses

Après cette manipulation, sauriez-vous répondre à ces questions ? Elles ne sont pas bien compliquées, il suffit de revenir sur les différentes manipulations que vous venez de faire !

  • Pourriez-vous créer un Simon à six touches ? Astuce : vous aurez besoin d'ajouter des composants au circuit électronique et des instructions au code.
  • Sauriez-vous créer un mode de jeu supplémentaire, permettant un jeu à plusieurs ? Astuce : ici, seul le code a besoin d'être modifié.

Liens avec d'autres expériences

Expériences sur Wikidébrouillard

D'autres expériences utilisant l'Arduino sont disponible dans ce wiki. Vous pouvez les retrouver ici : http://www.wikidebrouillard.org/index.php/Cat%C3%A9gorie:Arduino

Autres expériences

Vous pouvez retrouver une multitude d'expériences sur l'arduino à cette adresse : http://arduino.cc/forum/index.php/topic,67634.0.html

Applications : liens avec le quotidien

L’intérêt de cette manipulation est de vous faire comprendre comment sont fabriqués les jeux que vous pouvez trouver dans le commerce : ils reposent tous sur le principe d'un circuit électronique avec lequel vous interagissez. Ainsi, lorsque vous achèterez un jeu électronique, vous serez plus à même de comprendre comment il a été conçu et fabriqué !

Catégories

arduino jeu

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

Jouons au Simon

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