Dyrk.org
Do You Really Know

[Tuto] Jouer la reine des neiges avec un arduino

Publié le 4 novembre 2016 par #Ro0t

elsa

 

Comme tout papa qui aime faire plaisir à sa fille, je me suis pris un petit moment hier soir pour recréer la musique de la Reine des Neiges avec mon Arduino !

Bon en réalité c’est plus rigolo que ça, je me suis servi d’une commande obsolète de drone pour lui faire jouer la musique ^^

(Il faudra peut être monter le volume à la fin de la vidéo pour entendre la musique)

Matériel

Côté matos il vous faudra pas grand-chose :

  • Un Arduino
  • 2 fil
  • 1 piezo buzzer

 

sans-titre

 

Montage

Et côté montage, on va brancher un fil sur le GND, et un autre sur la pin 7 (pour l’exemple)

sans-titre

 

Logiciel

Et c’est là que je vais être un peu plus bavard …

 

Tout d’abord nous devons définir la pin correspondante à notre Piezo Buzzer
(Ici nous avons fait les branchements sur la 7) :

int MusiquePin = 7;

Je vais créer 2 tableaux de données.
L’un contiendra les temps (en millisecondes) :

int PrincesseDesNeigesRytm[] = {
250,250,1500,250,250, 750,
250,250,750,250,750,250, 750,
250,250,1500,250,250,250, 250,
750, 250,250,750,750,500,500,750, 0
};

L’autre contiendra les notes à jouer :

int PrincesseDesNeigesNote[] = {
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_G4, NOTE_G4, NOTE_D5,
NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_B4,
NOTE_C5, NOTE_A4, NOTE_B4, NOTE_C5, NOTE_G4, NOTE_G4,
NOTE_E5,NOTE_E5,NOTE_D5,NOTE_C5,NOTE_D5,NOTE_E5,NOTE_E5,
NOTE_F5,NOTE_E5,NOTE_C5,0
};

Aussi, il faudra  déclarer dans l’entête de votre fichier la valeur de ces notes

#define NOTE_G4  392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698

Ces 2 tableaux seront lus simultanément.

Chaque note correspondra à une durée…

Code Complet

#define NOTE_G4  392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698




//Pin du piezo Buzzer
int MusiquePin = 7;

//durée en milliseconde pour chaque note (dans l'ordre)
int PrincesseDesNeigesRytm[] = {
250,250,1500,250,250, 750,
250,250,750,250,750,
250, 750,
250,250,1500,250,250,250, 250, 750,
250,250,750,750,500,500,750,0
};

//Note à jouer (dans l'ordre)
int PrincesseDesNeigesNote[] = {
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_G4, NOTE_G4, NOTE_D5,
NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4,
NOTE_B4, NOTE_C5,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_G4, NOTE_G4, NOTE_E5,NOTE_E5,NOTE_D5,
NOTE_C5,NOTE_D5,NOTE_E5,NOTE_E5,NOTE_F5,NOTE_E5,NOTE_C5
,0
};


void setup() {
}

void loop() {
int i = 0;
// Lecture du tableau de note ... lorsque nous lisons un 0 c'est que c'est la fin
while (PrincesseDesNeigesNote[i] != 0){
//On joue la note
tone(MusiquePin, PrincesseDesNeigesNote[i],PrincesseDesNeigesRytm[i]);
//On attend X millisecondes (durée de la note) avant de passer à la suivante
delay(PrincesseDesNeigesRytm[i]);
//On arrête la lecture de la note
noTone(MusiquePin);
//On marque une courte pose (entre chaque note, pour les différencer)
delay(50);
//On passe à la note suivante
++i;
}
}

 

Conclusion

 

Et voilà !!! 
Vous allez pouvoir vous aussi vous fabriquer votre petit Tuner Reine des Neiges !!!
Surtout ne jeter pas vos appareils électronique ! Il y a toujours pleins de composant vraiment intéressant à l’intérieur !