Skip to Content

Jeu de la Roue à Tourner avec Arduino

Jeu de la Roue à Tourner avec Arduino

Dans ce tutoriel, vous apprendrez à créer un jeu « Tournez la Roue » utilisant des LEDs, un buzzer et un Arduino. Le Spin the Wheel game est un jeu amusant et interactif qui peut servir à diverses fins, comme décider qui commence une partie, sélectionner un gagnant au hasard pour un prix, ou simplement pour le divertissement.

Traditionnellement, il s’agit d’une grande roue mécanique segmentée en tranches colorées. Chaque tranche est marquée d’un numéro ou d’un prix, et les segments peuvent avoir des tailles différentes, indiquant les chances d’atterrir dessus. La roue est montée verticalement pour pouvoir tourner librement lorsqu’un joueur la fait tourner, soit à la main, soit en tirant un levier attaché.

Traditional, large Spin the Wheel game
Jeu traditionnel « Tournez la Roue » de grande taille (Amazon)

Les joueurs misent généralement sur l’endroit où la roue va s’arrêter. Après avoir placé leurs paris sur une zone numérotée ou colorée d’un plateau statique correspondant aux segments de la roue, l’animateur ou un joueur fait tourner la roue. Lorsque la roue s’arrête, un pointeur en haut indique le segment gagnant.

Ici, nous allons construire une version électronique réduite du jeu qui utilise un anneau de LEDs pour mettre en évidence un segment gagnant au lieu d’une roue mécanique tournante. Nous ajoutons aussi un buzzer pour les effets sonores, comme le clic de la roue qui tourne et la signalisation d’une victoire.

Animated spin the wheel demo
Démo du projet Tournez la Roue

En suivant ce tutoriel, vous apprendrez à lire un bouton poussoir, contrôler des LEDs et un buzzer avec un Arduino. Vous apprendrez aussi à créer un effet de rotation avec les LEDs pour simuler le mouvement d’une roue.

Alors, commençons et créons votre propre jeu Tournez la Roue avec Arduino !

Pièces requises

Voici les pièces nécessaires pour ce projet. Si vous avez déjà un ensemble de résistances et huit LEDs, vous n’aurez pas besoin du kit suggéré. Vous pouvez d’abord monter le projet sur une breadboard, mais ce n’est pas obligatoire si vous souhaitez construire une vraie roue et câbler les LEDs directement. Pour cela, le kit de fils avec pinces sera utile.

Arduino Uno

Dupont wire set

Kit de fils Dupont

Kit de fils avec pinces

Half_breadboard56a

Breadboard

Buzzer passif

Kit de boutons poussoirs

Kit de résistances & LEDs

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Tournez la Roue

Dans cette section, je vous montre comment connecter les composants et écrire le code pour le jeu Tournez la Roue. Pour simplifier le câblage et le code, j’utiliserai seulement quatre LEDs, alors que la roue réelle en a huit. Mais le câblage et le code sont faciles à étendre à plus de LEDs.

Câblage

L’image suivante montre le câblage du jeu Tournez la Roue pour quatre LEDs. Utilisez simplement les broches restantes (6,7,8,9) pour passer à huit LEDs si vous le souhaitez.

Commençons par connecter les LEDs. Comme une seule LED sera allumée à la fois, une seule résistance de limitation de courant de 220 Ohms est nécessaire entre la broche GND de l’Arduino et toutes les cathodes (broches courtes) des quatre LEDs. Vous pouvez allumer plusieurs LEDs simultanément (sans endommager l’Arduino), mais elles seront plus faibles.

Wiring of the Spin the Wheel game
Câblage du jeu Tournez la Roue

Ensuite, connectez les broches longues des LEDs aux sorties GPIO 2, 3, 4 et 5 de l’Arduino. Comme mentionné, pour huit LEDs, connectez aussi les broches 6, 7, 8, 9 de la même façon.

Puis, connectez le buzzer. Notez qu’il s’agit d’un buzzer passif avec polarité. La broche négative doit être reliée à la masse (GND) et la broche positive à la GPIO 11. Sinon, vous n’entendrez aucun son.

Enfin, le bouton poussoir qui active le jeu. Nous avons besoin d’une pull-up resistor de 1 kilo-ohm connectée au 5V et au bouton. La même broche du bouton est aussi reliée à la GPIO 12. Et l’autre broche du bouton doit être connectée à la masse.

Et voilà, le câblage est terminé. Si vous avez un doute, consultez le tableau de câblage détaillé ci-dessous.

Tableau de câblage

De Broche Couleur du fil Vers Broche
Arduino GND Bleu Résistance 220Ω 1
Résistance 220Ω 2 Bleu LED1 Cathode
Résistance 220Ω 2 Bleu LED2 Cathode
Résistance 220Ω 2 Bleu LED3 Cathode
Résistance 220Ω 2 Bleu LED4 Cathode
Arduino 2 Blanc LED1 Anode
Arduino 3 Jaune LED2 Anode
Arduino 4 Vert LED3 Anode
Arduino 5 Orange LED4 Anode
Arduino GND Bleu Buzzer Broche négative
Arduino 11 Violet Buzzer Broche positive
Arduino 5V Résistance 1KΩ 1
Résistance 1KΩ 1 Bouton 1
Bouton 1 Cyan Arduino 12
Bouton 2 Bleu Arduino GND

Code

Dans cette section, nous allons implémenter le code qui contrôle le jeu. Nous voulons que les LEDs s’allument en séquence circulaire en ralentissant progressivement jusqu’à s’arrêter complètement. En même temps, nous voulons produire un son de clic, similaire au bruit de la roue qui tourne, et jouer un son de victoire lorsque la roue s’arrête. Enfin, nous voulons démarrer le jeu quand le bouton est pressé.

Le code ci-dessous fait tout cela. Jetez un œil rapide pour avoir une vue d’ensemble. Ensuite, nous détaillerons chaque partie.

const int btnPin = 12;
const int buzzerPin = 11;
const int nLeds = 4;
const byte ledPins[] = { 2, 3, 4, 5 };

int curLed = 0;

void setLed(int state, int pause) {
  digitalWrite(ledPins[curLed], state);
  delay(pause);
}

void spin(int pause) {
  curLed = (curLed + 1) % nLeds;
  tone(buzzerPin, 100, 5);
  setLed(HIGH, pause);
  setLed(LOW, 0);
}

void win() {
  for (int i = 0; i < 10; i++) {
    tone(buzzerPin, 1000, 100);
    setLed(LOW, 100);
    tone(buzzerPin, 1500, 100);
    setLed(HIGH, 100);
  }
  noTone(buzzerPin);
}

void setup() {
  pinMode(buzzerPin, OUTPUT);
  for (int i = 0; i < nLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  int button = digitalRead(btnPin);
  if (button == LOW) {
    setLed(LOW, 0);
    int start = random(1, 50);
    for (int pause = start; pause < 300; pause += 10) {
      spin(pause);
    }
    win();
  }
  delay(100);
}

Constantes et variables

Nous commençons par définir les constantes et variables utilisées dans le code. La constante btnPin spécifie la broche à laquelle le bouton est connecté. La constante buzzerPin spécifie la broche du buzzer.

La variable nLeds indique le nombre de LEDs utilisées dans le jeu. Le tableau ledPins contient les broches des LEDs. Pour ajouter plus de LEDs, il suffit d’étendre le tableau ledPins et d’ajuster la constante nLEDs en conséquence.

const int btnPin = 12;
const int buzzerPin = 11;
const int nLeds = 4;
const byte ledPins[] = { 2, 3, 4, 5 };

La variable curLed contrôle quelle LED est active actuellement. C’est un index dans le tableau ledPins. Toutes les autres LEDs seront éteintes.

int curLed = 0;

Fonction setLed

La fonction setLed() est responsable de définir l’état de la LED courante et de faire une pause pendant une durée spécifiée. Elle prend deux paramètres : state (HIGH ou LOW) et pause (la durée en millisecondes de la pause après avoir défini l’état de la LED).

Si vous avez des difficultés, consultez notre tutoriel sur How To Blink An LED Using Arduino.

void setLed(int state, int pause) {
  digitalWrite(ledPins[curLed], state);
  delay(pause);
}

Fonction spin

La fonction spin() est appelée lorsque le bouton est pressé pour démarrer la rotation de la roue. Elle incrémente la variable curLed pour sélectionner la LED suivante dans la séquence. Elle joue aussi un court son (5 ms), à basse fréquence (100 Hz) sur le buzzer. Cela imite le son de l’indicateur qui frappe les ergots de la roue tournante. Ensuite, elle appelle la fonction setLed() pour allumer la LED courante pendant une pause spécifiée puis l’éteindre.

L’expression curLed = (curLed + 1) % nLeds garantit que curLed boucle et revient à 0 lorsqu’elle atteint le nombre total de LEDs (nLeds).

Pour en savoir plus sur le contrôle d’un buzzer, vous pouvez lire How To Interface A Piezo Buzzer With Arduino.

void spin(int pause) {
  curLed = (curLed + 1) % nLeds;
  tone(buzzerPin, 100, 5);
  setLed(HIGH, pause);
  setLed(LOW, 0);
}

Fonction win

La fonction win() est appelée lorsque la roue s’arrête. Elle joue une séquence de sons sur le buzzer et alterne l’allumage et l’extinction des LEDs pour un effet visuel attrayant. Après la mélodie, le buzzer est éteint.

void win() {
  for (int i = 0; i < 10; i++) {
    tone(buzzerPin, 1000, 100);
    setLed(LOW, 100);
    tone(buzzerPin, 1500, 100);
    setLed(HIGH, 100);
  }
  noTone(buzzerPin);
}

Fonction setup

Dans la fonction setup(), nous configurons la broche du buzzer en OUTPUT, car nous allons écrire dessus. Nous configurons aussi chaque broche des LEDs dans le tableau ledPins en OUTPUT. Et la broche du bouton btnPin est configurée en INPUT, car nous allons lire son état.

void setup() {
  pinMode(btnPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
  for (int i = 0; i < nLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

Fonction loop

La fonction loop() est la partie principale du code qui tourne en boucle. Elle lit d’abord l’état du bouton avec digitalRead(). Si le bouton est pressé (LOW), elle éteint la LED courante, génère une valeur de pause aléatoire de départ, puis appelle la fonction spin() de façon répétée avec des durées de pause croissantes jusqu’à atteindre un maximum (500 ms). Enfin, elle appelle la fonction win() pour jouer la séquence de victoire.

Pour plus d’infos sur la lecture d’un bouton, consultez notre tutoriel sur How To Use A Push Button With Arduino.

void loop() {
  int button = digitalRead(btnPin);
  if (button == LOW) {
    setLed(LOW, 0);
    int start = random(1, 50);
    for (int pause = start; pause < 500; pause += 10) {
      spin(pause);
    }
    win();
  }
  delay(100);
}

Et voilà ! Avec ce code, vous obtenez un bel effet de roue tournante. Une fois le bouton pressé, les LEDs s’allument dans l’ordre circulaire et, comme le temps de pause augmente, la séquence ralentit jusqu’à l’arrêt sur la LED gagnante. Vous pouvez ensuite appuyer à nouveau sur le bouton. Et comme le départ est aléatoire, la durée de rotation varie à chaque fois.

Roue imprimée en 3D

Il est facile de placer quatre LEDs sur une breadboard, mais avec huit LEDs, c’est plus compliqué. Je voulais une belle roue et j’ai utilisé mon imprimante 3D pour imprimer un support de LEDs en forme de :

Front and back of the 3D design for the wheel
Face avant et arrière du design 3D de la roue

Vous pouvez télécharger le fichier STL file for the Wheel here. Notez les deux supports à l’arrière, où vous pouvez insérer deux brochettes en bois. Cela vous permet d’incliner la roue si vous le souhaitez. La photo ci-dessous montre à quoi ressemble la roue imprimée en 3D avec les LEDs placées.

Roue imprimée en 3D avec LEDs

N’hésitez pas à utiliser ce modèle comme point de départ pour un design plus joli. J’aimerais imprimer un boîtier complet avec un Arduino Nano intégré et le bouton de démarrage au centre. Mais ce sera pour un autre tutoriel.

Conclusion

Dans ce tutoriel, nous avons appris à construire un jeu Tournez la Roue. En suivant les instructions étape par étape, vous devriez maintenant avoir un jeu entièrement fonctionnel.

Nous avons commencé par rassembler toutes les pièces nécessaires, incluant une carte Arduino, des LEDs, un bouton, un buzzer et un bouton poussoir. Ensuite, nous avons câblé les composants à la carte Arduino. Il est important de bien respecter les connexions, sinon les LEDs ne s’allumeront pas dans le bon ordre. Une fois le câblage terminé, nous sommes passés à la partie codage.

En conclusion, construire un jeu Tournez la Roue est un projet amusant et captivant qui montre la polyvalence des cartes Arduino. Il vous permet de combiner matériel et logiciel pour créer un jeu interactif apprécié par tous les âges.

Alors pourquoi ne pas rassembler les pièces nécessaires, suivre les instructions de ce tutoriel et créer votre propre jeu Tournez la Roue ? C’est un excellent moyen d’en apprendre plus sur Arduino, d’améliorer vos compétences en codage et de vous amuser avec vos amis et votre famille.

Si vous avez des questions ou rencontrez des difficultés, n’hésitez pas à consulter la section FAQ ou à demander de l’aide à la communauté Arduino. Bon bricolage !

Foire aux questions

Voici quelques questions fréquemment posées sur la construction d’un jeu Tournez la Roue.

Qu’est-ce qu’un jeu Tournez la Roue ?

Un jeu Tournez la Roue est un jeu populaire où les joueurs font tourner une roue pour déterminer leur prix ou résultat. Il est souvent utilisé dans les jeux télévisés, les fêtes foraines et les événements pour ajouter un élément d’excitation et de hasard.

Comment fonctionne le jeu Tournez la Roue ?

Le jeu Tournez la Roue fonctionne en utilisant l’Arduino pour contrôler les LEDs et le buzzer selon l’entrée du bouton poussoir. Quand le bouton est pressé, l’Arduino allume les LEDs en séquence tout en jouant un effet sonore via le buzzer. La séquence ralentit jusqu’à ce qu’une LED finale s’allume, signalant la fin du jeu.

Puis-je personnaliser les résultats du jeu Tournez la Roue ?

Oui, vous pouvez personnaliser les résultats du jeu selon vos préférences. Vous pouvez attribuer différents prix, actions ou messages à chaque LED et modifier le code Arduino en conséquence.

Puis-je ajouter des fonctionnalités supplémentaires au jeu Tournez la Roue ?

Absolument ! Vous pouvez améliorer le jeu en ajoutant des fonctionnalités comme un écran pour afficher le résultat sélectionné, un moteur pour faire tourner physiquement la roue, ou même une connectivité sans fil pour contrôler le jeu à distance.

Puis-je avoir plus de huit LEDs sur la roue ?

Le nombre de ports GPIO sur un Arduino Uno est limité. Si vous voulez ajouter plus de LEDs, par exemple 16, vous aurez besoin soit d’une carte plus grande avec plus de broches GPIO, soit d’un expandeur GPIO. Consultez notre tutoriel Using GPIO Expander MCP23017 With Arduino, qui vous permet de contrôler jusqu’à 128 LEDs !

Puis-je allumer plusieurs LEDs en même temps ?

Oui, c’est possible. Mais comme toutes les LEDs sont connectées via une seule résistance de limitation de courant, plus il y a de LEDs allumées, plus elles seront faibles. Vous pouvez les connecter individuellement pour éviter cela, mais vous aurez alors peut-être besoin d’une alimentation supplémentaire.

Si vous avez des questions ou besoin d’aide, n’hésitez pas à laisser un commentaire.

Bon bricolage ; )