Jouer une musique en appuyant sur un bouton

Bonjour j'aimerais pouvoir jouer une musique (avec un buzzer passif) en appuyant sur un bouton.
J'ai déjà la mélodie:

#include "pitches.h"
 
// notes in the melody:
int melody[] = {
  NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5};
int duration = 200;  // 500 miliseconds
 
void setup() {
 
}
 
void loop() {  
  for (int thisNote = 0; thisNote < 3; thisNote++) {
    // pin8 output the voice, every scale is 0.5 sencond
    tone(8, melody[thisNote], duration);
     
    // Output the voice after several minutes
    delay(500);
  }
    for (int thisNote = 4; thisNote < 5; thisNote++) {
    // pin8 output the voice, every scale is 0.5 sencond
    tone(8, melody[thisNote], duration);
     
    // Output the voice after several minutes
    delay(600);
  }
    for (int thisNote = 5; thisNote < 6; thisNote++) {
    // pin8 output the voice, every scale is 0.5 sencond
    tone(8, melody[thisNote], duration);
     
    // Output the voice after several minutes
    delay(500);
  }
    for (int thisNote = 6; thisNote < 8; thisNote++) {
    // pin8 output the voice, every scale is 0.5 sencond
    tone(8, melody[thisNote], duration);
     
    // Output the voice after several minutes
    delay(300);
  }
   
  // restart after two seconds 
  delay(1000);
}

Maintenant il faut que dès que je presse le bouton il faudrait que la musique se lance.

J'ai déjà pris le code pour qu'une LED s'allume quand je presse le bouton en remplaçant la LED par le buzzer mais cela produit seulement un bourdonnement....

Est-ce que qu'elqu'un aurais la solution pour que je puisse jouer cette musique par la pression d'un bouton ?

Merci ! :slight_smile: :grinning:

Bonjour,

Au début de la loop tu attends que le bouton soit appuyé.
Comme ceci:

#include "pitches.h"

// notes in the melody:
int melody[] = {
  NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5
};
int duration = 200;  // 500 miliseconds
const byte pinButton=2;

void setup()
{
  pinMode(pinButton,INPUT_PULLUP);
}

void loop() {
  while (digitalRead(pinButton)==HIGH);    // attente appui
  for (int thisNote = 0; thisNote < 3; thisNote++) {
    // pin8 output the voice, every scale is 0.5 sencond
    tone(8, melody[thisNote], duration);

    // Output the voice after several minutes
    delay(500);
  }
  for (int thisNote = 4; thisNote < 5; thisNote++) {
    // pin8 output the voice, every scale is 0.5 sencond
    tone(8, melody[thisNote], duration);

    // Output the voice after several minutes
    delay(600);
  }
  for (int thisNote = 5; thisNote < 6; thisNote++) {
    // pin8 output the voice, every scale is 0.5 sencond
    tone(8, melody[thisNote], duration);

    // Output the voice after several minutes
    delay(500);
  }
  for (int thisNote = 6; thisNote < 8; thisNote++) {
    // pin8 output the voice, every scale is 0.5 sencond
    tone(8, melody[thisNote], duration);

    // Output the voice after several minutes
    delay(300);
  }
}

Le bouton doit être connecté entre la pin 2 et GND.

Tout d'abord, Merci beaucoup pour la réponse !

Cela ne semble pas fonctionner... :confused:

Voici mon montage:

J'ai une Arduino MEGA 2560

Merci :slight_smile:

Tu laisses le buzzer comme il était connecté avant et tu ajoutes un bouton entre la pin 2 et GND.

Merci beaucoup ! Cela marche parfaitement !