Go Down

Topic: Jouer une musique en appuyant sur un bouton (Read 154 times) previous topic - next topic

6Maxence

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


#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 !  :)  :smiley-lol:

kamill

#1
Nov 30, 2019, 01:21 pm Last Edit: Nov 30, 2019, 01:42 pm by kamill
Bonjour,

Au début de la loop tu attends que le bouton soit appuyé.
Comme ceci:
Code: [Select]
#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.

6Maxence

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

Cela ne semble pas fonctionner... :/

Voici mon montage:


J'ai une Arduino MEGA 2560

Merci  :)

kamill

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

6Maxence

Merci beaucoup ! Cela marche parfaitement !

Go Up