Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Arduino
  3. Projet 2
Extrait - Arduino S'exercer au prototypage électronique (10 projets créatifs à réaliser soi-même)
Extraits du livre
Arduino S'exercer au prototypage électronique (10 projets créatifs à réaliser soi-même)
1 avis
Revenir à la page d'achat du livre

Projet 2 - Jeu de mémorisation musicale

Présentation

Pour visualiser la vidéo du projet : https://youtu.be/zYs83-678GA

Images/04AR02.png

Jeu original Simon édité par MB

Ce projet consiste à réaliser un jeu électronique de mémoire musicale inspiré du célèbre jeu Simon édité par MB en 1979.

Ce jeu de mémoire et de répétition, qui trouve son origine dans le jeu ”Jacques a dit...” (en anglais, "Simon says", d’où son nom), consiste à tenter de reproduire une suite de notes diffusées par l’automate. Relativement simple techniquement, il n’en est pas moins amusant à utiliser seul ou à plusieurs. Le montage final se prête aussi merveilleusement au détournement pour en imaginer d’autres usages.

Images/04AR01.png

Jeu Simon

Ce projet sera l’occasion d’explorer de nouvelles notions, comme la création de types de données spécifiques ou l’écriture de fonctions. L’usage des interrupteurs permettra de comprendre la gestion de ce type d’entrées, avec la notion de "tirage par le haut" (pull up) des potentiels.

1. Principe de fonctionnement

L’interface est constituée par une série de quatre couples bouton/led de couleur, chacun de ces couples étant associé à une note. Un actionneur piézoélectrique sert de haut-parleur et diffuse...

Matériel et outillage

Le matériel nécessaire représente un budget d’environ 40 euros.

1. Matériel

  • Une Arduino de type UNO ou équivalent.

  • Quatre boutons poussoirs pour circuit imprimé (quatre picos) à choisir parmi de grands modèles.

  • Quatre diodes électroluminescentes (leds) de couleurs différentes.

  • Quatre résistances d’environ 200 Ohms.

  • Un actionneur piézoélectrique.

  • Une plaque de prototypage (grand modèle).

  • Du fil de connexion.

images/01AR01.png

Arduino UNO

Images/04AR03.png

Boutons poussoirs

Images/04AR04.png

Actionneur piézoélectrique

Images/04AR05.png

Leds de couleur

Images/04AR06.png

Résistances

2. Outillage

Pour réaliser ce projet, il sera nécessaire d’utiliser un ordinateur pour programmer l’Arduino et éventuellement une pince coupante pour débiter le fil de connexion.

Montage

Le montage consiste à relier les trois systèmes à l’Arduino : l’actionneur piézoélectrique, la série de leds et la série de boutons. Si vous le désirez, vous pouvez d’ores et déjà prévoir un boîtier pour accueillir le circuit.

Images/04AR07.png

Montage du jeu Simon

Images/04AR08.png

Circuit du jeu Simon

1. Actionneur piézoélectrique

Il s’agit d’un composant qui a la particularité de se déformer lorsqu’il est soumis à une tension. Cette caractéristique est mise à profit ici, car en étant soumis à une tension oscillante, il se met à vibrer, agissant comme un haut-parleur.

Même si ce n’est pas exploité ici, il est intéressant de noter que les composants piézoélectriques sont réversibles lorsqu’ils sont soumis à une action mécanique (par exemple, une pression du doigt), ils provoquent à leur tour une tension. Ils peuvent donc être utilisés comme capteurs de contact ou de vibration.

Le câblage ne pose aucun problème particulier, car il s’agit d’un dipôle.

2. Leds

Les diodes électroluminescentes (souvent appelées leds) sont conçues pour fonctionner sous une certaine tension, désignée dans la documentation par le terme ”tension de seuil”. Elles acceptent aussi...

Programmation

La programmation du jeu Simon s’articule en trois étapes : lui apprendre à chanter des mélodies, à capter ce que joue l’utilisateur et à composer de nouvelles mélodies.

1. Chanter des mélodies

Au début du jeu, l’Arduino commence par diffuser des mélodies de manière sonore (à travers l’actionneur piézoélectrique) et visuelle (en faisant clignoter les leds). Comme ces mélodies sont changeantes, il est préférable d’écrire une fonction générique pour lire une partition.

Ce début de code permet en outre de vérifier le bon fonctionnement des leds et de l’actionneur piézoélectrique.

La partition est formatée selon une structure spécifique définie avec la fonction typedef().

Dans un premier temps, les numéros des bornes reliées aux leds sont mémorisés dans un tableau, ainsi que le numéro de la sortie liée à l’actionneur piézoélectrique. Dans la foulée est déclaré un tableau de quatre cases, nommé clavier, et qui contient les fréquences de notes liées à chaque "touche". La liste de ces fréquences a été choisie arbitrairement pour rendre un crescendo, mais vous pouvez choisir des fréquences plus musicales si vous en avez l’envie et la connaissance.


int leds[4] =  {3, 5, 7, 9}; 
int HautParleur = 10; 
 
int clavier[4] = {88, 122, 168, 225}; 
 

Le format de données pour écrire une mélodie est structuré de la manière suivante : il s’agit d’un tableau (de notes) de longueur indéterminée. Chaque élément (note) du tableau est caractérisé par trois paramètres :

  • La touche enfoncée (le numéro de la case du clavier : entre 0 et 3).

  • La durée (en millisecondes).

  • La durée du silence (après la note).

L’ensemble constitue donc un tableau de tableaux, un format qui n’est pas très aisé à manipuler et surtout à transmettre d’une fonction à l’autre.

Pour simplifier la manipulation de ces données, un type de données spécifique est créé, qui porte...

Pour aller plus loin

1. Améliorations possibles

Ce jeu Simon est déjà un succès, car il permet de s’amuser seul ou à plusieurs avec une difficulté graduelle, mais il peut encore être amélioré.

Créer un boîtier

Pour un usage courant et autonome, intégrez le circuit (qui peut être soudé au lieu d’être simplement câblé) dans un boîtier protecteur en ajoutant une alimentation par pile (avec un boîtier 9 V par exemple) et des boutons lumineux et design.

Rendre le jeu plus difficile

La durée des silences entre les notes n’est pas prise en compte lors de la capture de la mélodie jouée par l’utilisateur. Ajoutez cette dimension au niveau de la capture et au niveau de la comparaison avec l’original pour rendre ce jeu plus difficile à jouer.

Ajouter des touches

Ajouter des touches rend le jeu plus intéressant. En utilisant toutes les bornes de l’Arduino (même les bornes analogiques, mais pas les deux premières bornes numériques qui relayent la communication série), il est possible d’augmenter le nombre de touches jusqu’à huit. Pour pousser cette exploration encore plus loin, utilisez le Charlieplexing. Cette technique de multiplexage consiste à utiliser le fait que les leds ne conduisent que dans un sens pour en piloter de nombreuses avec...