[Tuto] Jouer la reine des neiges avec un arduino

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 !

 

Partagez ce contenu

3 comments

  • bonjour,

    Je débute.

     

    Pourquoi on déclare le rythme deux fois

    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

    • Coucou Paul,

      Excellente question … alors je ne sais pas pourquoi j’ai fait ça comme ça à l’époque (2016)
      Cependant on peut imaginer que c’était pour mieux espacer les notes ;)

      Dyrk

  • SAlut je suis fan de la reine des neiges. merci beaucoup hhhhhhhhhh. Au fais pourrais vous faire une version rap des CP?

    MErci beaucoup, Jean EDward

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *