Simon : Boutons et notes
Fait partie de la section Projets du Journey Arduino de Coddy. Leçon 13 sur 24.
Simon est un jeu de mémoire : le plateau joue une séquence de lumières colorées et de notes, et tu la répètes à l’aide des boutons. À chaque tour, la séquence s’allonge d’un élément, jusqu’à ce que tu fasses une erreur. Il y a quatre couleurs, chacune associée à un bouton, une LED et une note.
Comme il y a quatre éléments de chaque type, les tableaux permettent de garder le sketch court. L’entrée 0 de chaque tableau correspond au rouge, 1 au vert, 2 au bleu et 3 au jaune ; ainsi, un seul nombre, i, désigne une couleur partout :
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};Une boucle for vérifie les quatre boutons. Agis à deux moments : quand un bouton est enfoncé (LOW maintenant, HIGH la fois précédente) et quand il est relâché (HIGH maintenant, LOW la fois précédente). Le tableau lastState conserve la dernière lecture de chaque bouton. Les étapes suivantes comptent un appui lorsque le bouton est relâché. Ces boutons ne rebondissent pas, les vérifications des changements d’état suffisent donc.
Défi
MoyenFais jouer les quatre couleurs :
- dans
setup(), une boucleforconfigure les broches des LED en sorties et les broches des boutons enINPUT_PULLUP - quand le bouton
iest enfoncé, allumeledPins[i]et jouenotes[i]sur la broche 8 - quand il est relâché, éteins la LED et appelle
noTone()
Appuie sur Exécuter, joue avec les boutons, puis clique sur Vérifier.
Essayez vous-même
// Une entrée par couleur : rouge, vert, bleu, jaune
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523}; // do, mi, sol et do aigu
const int buzzerPin = 8;
int lastState[4] = {HIGH, HIGH, HIGH, HIGH}; // la dernière lecture de chaque bouton
void setup() {
// Les LED sont des sorties, les boutons sont en INPUT_PULLUP
}
void loop() {
// Pour chaque bouton : lorsqu’on l’enfonce, allumer sa LED et jouer sa note ;
// lorsqu’on le relâche, éteindre la LED et arrêter la note
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Projets
1Feu de circulation
Cycle du feu de circulationFeu de circulation avec millis()Bouton de traverséeSignal piéton et buzzer4Simon
Simon : Boutons et notesSimon : Séquence aléatoireSimon : Répéter le motifSimon : Le jeu completEntraînez-vous par vous-même : Playground Arduino