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 !
Etape 1 : Construire la partie physique du jeu
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 :
- On attend l’appui sur un des boutons poussoirs pour lancer le jeu
- Chaque bouton s’allume, accompagné d’une note de musique pour signaler le début du jeu
- L’Arduino allume un bouton au hasard, et émet un son qui lui est associé
- Le joueur a deux secondes pour appuyer sur ce bouton
- L’Arduino rallume ce bouton et son son, et ajoute un second bouton avec son propre son, toujours de façon aléatoire
- Le joueur à deux secondes pour appuyer sur le premier bouton, puis deux secondes pour appuyer sur le second
- L’Arduino ajoute un nouveau bouton et son son à chaque réussite du joueur
- 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
- 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
Merci pour le tuto les boutons sont commandés ! Mais je vais faire autre chose avec 😉