Jacques a dit : fabrique-moi un jeu “Simon” !

Medium bks5zzmb2wyrsussupgp

Difficulté:

Comment faire travailler sa mémoire en s’amusant, grace à un programme Arduino qui s’inspire du fameux jeu “Simon”


Vous connaissez sûrement le jeu “Simon”, apparu à la fin des années 70, de forme circulaire et qui comprenait 4 gros boutons lumineux de couleurs différentes => le jeu proposait une séquence lumineuse accompagnée de sons, que le joueur devait reproduire sans se tromper dans un délai donné.
Son nom, “Simon”, vient du terme anglais “Simon says”, équivalent de notre “Jacques a dit”, d’où le titre de ce tuto !


C’est en tombant par hasard sur une grande coupe / assiette en bois, résultat plus ou moins réussi d’un stage de tournage sur bois, que je me suis dit que cet objet pas très utile ni apprécié de ma femme pourrait servir de base à un tel jeu ; le tout orchestré par une petite carte Arduino Nano…


Rien de bien compliqué ici : il suffit de savoir allumer une led, lire l’état d’un bouton et envoyer une fréquence à un petit haut-parleur => en avant !

Matériel

Medium mmlff73prhkkkg4j1aq8

Budget:

15 €

J’ai utilisé :

Obligatoire :

  • Une carte Arduino Nano (5€)
  • Un jeu de 5 boutons poussoirs lumineux type “arcade” (6€ sur eBay)
  • Un mini haut parleur 0,2W récupéré sur un petit poste de radio Sony
  • Du fil électrique
  • 5 résistances 220 Ohms pour les leds des boutons poussoirs (4 x 0,06€ 😉 )
  • 1 résistance de 470 Ohms pour le haut parleur (0,06€)
  • Un peu de soudure

Selon vos goûts :

  • Une boîte ou autre support pour le jeu => dans mon cas, un grand coupe en bois !

Facultatif :

  • Un support ZIF 32 broches pour la carte Arduino (4€ sur Conrad.fr)
  • Une pile 9V et la connectique associée, si vous souhaitez rendre votre jeu autonome en énergie et sans fil
  • Un petit morceau de plaque perforée avec bandes de cuivre pour monter l’Arduino et les résistances pour que ce soit plus propre
  • Des cosses femelles plates pour raccorder les boutons poussoirs sans soudure

NB :

  • Si vous ne trouvez pas de boutons poussoirs qui soient lumineux, vous pouvez toujours utiliser des boutons poussoirs “normaux” et les associer à des leds de 5 couleurs différentes.
  • J’ai utilisé 5 couleurs, mais le jeu d’origine n’en comportait que 4 et on trouve des variantes à 6 couleurs => à vous de choisir !

Fichiers techniques:

Simon.ino

Etape 1 : Construire la partie physique du jeu

Medium by4wbcdrjcr5ofjg7dte

Pour ma part, rien de sorcier : une scie cloche pour percer 5 trous de 28mm pour les boutons et un de 32mm pour le haut-parleur… et c’est tout ! 🙂

Bon, étant un peu perfectionniste, j’ai aussi passé 3 couches d’huile-cire, mais rien d’obligatoire 😉 !

Cette partie est vraiment celle ou vous pouvez (devez !) inventer votre propre solution pour faire tenir 5 boutons poussoirs, un haut-parleur et une petite carte Arduino et décorer le tout selon vos préférences => lâchez-vous ! Et montrez-nous vos créations !!!

Etape 2 : Elaborer le montage électronique

Oui, mieux vaut tester tout cela sur une planche d’expérimentation avant de se lancer sur les soudures “en vrai” ! => je vous fourni le schéma de câblage et sa source pour le logiciel Fritzing.

Rien de bien particulier, cependant :

  • vous remarquerez que je n’ai pas mis de résistances de tirage pour les boutons poussoirs : pour une fois, j’ai préféré utiliser celles qui sont déjà incluses sur la carte Arduino, afin de gagner de la place, des composants et du temps de montage !
    Pour cela, rappelez-vous qu’il faut le mentionner dans le programme de l’Arduino au moment de déclarer les broches raccordées aux boutons poussoirs comme étant des entrées : pinMode(2, INPUT_PULLUP);
  • N’oubliez pas de protéger vos leds (et votre carte Arduino !) avec des résistances de 220 Ohms
  • De même au niveau du haut-parleur avec une résistance de 470 Ohms

Etape 3 : Ecrire le programme pour l’Arduino

Bon, là encore, je vous propose et décris MA solution, mais il y a plusieurs façons d’arriver au même résultat, et vous pourrez aussi souhaiter avoir un autre fonctionnement de votre jeu, d’y ajouter des possibilités, des variantes, etc, etc !

Dans ma solution, le jeu se déroule comme suit :

  1. On attend l’appui sur un des boutons poussoirs pour lancer le jeu
  2. Chaque bouton s’allume, accompagné d’une note de musique pour signaler le début du jeu
  3. L’Arduino allume un bouton au hasard, et émet un son qui lui est associé
  4. Le joueur a deux secondes pour appuyer sur ce bouton
  5. L’Arduino rallume ce bouton et son son, et ajoute un second bouton avec son propre son, toujours de façon aléatoire
  6. Le joueur à deux secondes pour appuyer sur le premier bouton, puis deux secondes pour appuyer sur le second
  7. L’Arduino ajoute un nouveau bouton et son son à chaque réussite du joueur
  8. Le joueur doit rejouer la même séquence que l’Arduino, dans le bon ordre et en respectant un délai maximum de 2 secondes entre chaque appui sur un bouton
  9. Si le joueur se trompe d’ordre ou répond trop lentement, l’Arduino joue une animation de fin de jeu et attend un appui sur n’importe quel bouton pour recommencer à zéro.

NB :

  • J’ai limité la séquence à 50 sons & lumière… à priori, personne n’arrive si loin 😉
  • En début de programme, plusieurs constantes permettent d’adapter le jeu à vos envies : le vitesse à laquelle l’Arduino joue ses séquences, le délai imparti au joueur pour y répondre, les notes associées à chaque bouton (la fréquence, en Hertz de ladite note => voir le tableau joint, issu de Wikipédia) et même le nombre de boutons / leds utilisés.
  • En fin de programme, on trouve les fonctions utilisées par celui-ci, dont les animations de début et de fin de jeu que vous pouvez là aussi adapter à vos souhaits !

Mise à jour du 06/01/2015 : Ajout d’une animation à la mise sous tension du jeu, pour valider que c’est OK et que toutes les leds fonctionnent.

Etape 4 : Assembler le tout

Rien de particulier, dans mon cas :

  • Les boutons poussoirs sont mis en place et maintenus par vissage
  • Je les oriente juste tous de façon à avoir les connexions vers l’intérieur de ma coupe en bois
  • Je coupe à la scie à métaux un morceau de carte perforée (avec des pistes de cuivre sur une face, orientées dans le sens de la largeur) de 14 x 22 trous
  • Je marque l’emplacement où sera soudé mon support ZIF pour mon Arduino et je coupe les bandes de cuivre en dessous, d’un trait de scie à métaux
  • Je fais de même pour les résistances, qui seront soudées perpendiculairement aux broches de l’Arduino => une 470 Ohms en face de la broche D12 de l’Arduino et quatre de 220 Ohms en face des broches D7 à D11
  • Je soude le support ZIF (= sans effort d’insertion) qui recevra mon Arduino à l’emplacement prévu et je coince un petit bout de fil dans les deux premières broches, inutilisées, pour ne pas me tromper ensuite (le support dispose de 32 trous contre 30 broches pour l’Arduino Nano) !
  • Je soude mes 5 résistances
  • Je soude une rangée de 11 picots mâles, en face des broches D2 à D12 de l’Arduino pour y raccorder les boutons poussoirs (D2 à D6), mes leds (D7 à D11) et mon haut-parleur (D12)
  • Je déporte le +5V et une broche GND (0V) via un petit fil rouge et un noir vers deux pistes de cuivre, en bout de carte perforée, et j’y soude deux rangées de 3 picots mâles pour y raccorder l’anode de mes leds (+5V) ; ainsi que la masse de mes boutons et celle de mon haut-parleur (0V)
  • Je visse mon montage électronique entre deux boutons poussoirs, sous mon jeu
  • Je colle mon haut-parleur au centre du jeu avec 3 point de colle standard
  • Je raccorde le tout avec du fil de couleur et des cosses serties

Et voilà, plus qu’à alimenter le tout via un câble USB pour voir si ça marche ! 😉

Attention ! : sur le schéma que je fournis, les leds sont sur les broches D2 à D6 et les boutons sur les broches D7 à D11… alors que c’est l’inverse dans mon programme Arduino… car je m’a trompé lors de la réalisation “en vrai” du câblage !!! Comme quoi, on arrive toujours à faire une erreur, même avec toutes les précautions du monde… désolé…

Bon, pour le moment, une fois le jeu à l’endroit, il repose sur le talon des boutons-poussoirs, ce qui n’est sans doute pas terrible… mais cela me convient visuellement et je n’ai pas encore figé une solution pour remédier à ce “problème”…

Etape 5 : Pour aller plus loin…

Comme je l’ai dit et redit, ce projet est vraiment personnalisable à souhait :

  • Vous pouvez créer votre propre boîtier,
  • Vous pouvez modifier le nombre de boutons / couleurs à utiliser
  • Vous pouvez adapter le programme du jeu à l’infini !

Pour ma part, les points suivants me titillent encore ! 😉 :

  • Ajouter une pile 9V et un interrupteur pour rendre le jeu vraiment autonome et sans fil à la patte !
  • Trouver une idée pour cacher les “entrailles” du jeu : un récipient en plastique transparent ou un bol / saladier en inox retourné ?
  • De même, trouver peut-être le moyen de protéger le dessus du haut-parleur ?
  • Ajouter un bouton à 3 positions pour varier les modes de jeu : sons et lumière OU que sons OU que lumières ?
  • Ajouter un potentiomètre pour pouvoir ajuster la vitesse du jeu !

Mise à jour du 10/01/2015 :
La pile 9V (raccordée aux bornes Vin (+) et Gnd (-) de l’Arduino) et son mini-interrupteur sont en place, ainsi que la protection des “entrailles” de la bête… = une gamelle en inox “volée” à mon chien, légèrement entamée à la disqueuse pour conserver l’accès au port USB de l’Arduino et maintenue en place par quatre loquets à billes qui viennent pincer le rebord plus large de la gamelle !
Bon, le tout est du coup un peu haut je trouve, mais c’est pas si mal et les défis commencent : perso, j’arrive à une séquence de 20 sons, qui dit mieux ! 😉

Voilà, c’est à vous de jouer maintenant, et n’hésitez pas à présenter le fruit de votre travail !

Modifier mon Tutoriel

Vous aimez ce tutoriel ?


Ipxav

07 juil. 2016 à 10:33

Merci pour le tuto les boutons sont commandés ! Mais je vais faire autre chose avec 😉

Ipxav

07 juil. 2016 à 10:33

Ce sera un lecteur musical pour enfant basé sur un shield mp3 et un trinket pro. C'est pas gagné sur le dev mais ça sera marrant !

Ipxav

07 juil. 2016 à 10:33

Je jetterais un coup d'oeil ! Merci pour l'info 🙂

fishgame3

22 mar. 2017 à 11:16

Bonjour, superbe tuto. Je ne vois pas le code pour l'arduino; Peux-tu le poster?

Chapao

22 mar. 2017 à 17:09

Argh, encore une perte suite à la migration du site OAM => je l'ai remis dans la partie "Fichiers techniques", en haut du tuto, en m'excusant de ce désagrément !

fishgame3

23 mar. 2017 à 11:55

Merci beaucoup, je zieute aussi du côté du lightrush et je serais bien preneur de tes modifs sur le soft. Je ne ais cependant pas faire une vesion aussi élaborée mécaniquement.
Merci encore et bravo.


S'inscrire:


  • Vues: 807
  • J'aime: 4