Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 193

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 197

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338
[ Wikidébrouillard ] Lecteur de mélodie

Lecteur de mélodie

De Wikidebrouillard.

(De manière simple)
m
 
(39 versions intermédiaires masquées)
Ligne 1 : Ligne 1 :
{{avertissement}}
{{avertissement}}
-
{{vidéo|numérovidéo = <videoflash type="mediaspip" num = 1>entrer ici l'URL de la vidéo en flash sur http://mediaspip.ptitdeb.infini.fr|400|300</videoflash>}}
+
{{vidéo|numérovidéo = <videoflash type="mediaspip" num = 1>http://mediaspip.ptitdeb.infini.fr/IMG/flv/LesPetitsDebrouillards-encoded.flv|400|300</videoflash>}}
=='''Présentation de l'expérience'''==
=='''Présentation de l'expérience'''==
 +
Le but de l'expérience est de créer, avec un Arduino, un montage qui joue une mélodie prédéfinie.
Le but de l'expérience est de créer, avec un Arduino, un montage qui joue une mélodie prédéfinie.
== '''Matériel''' ==
== '''Matériel''' ==
 +
* [[Image:ArduinoUno_R3_Front_450px.jpg|50px]] Un [[arduino]]
* [[Image:ArduinoUno_R3_Front_450px.jpg|50px]] Un [[arduino]]
-
* [[Image:Ordinateur.jpg|50px]] Un ordinateur
+
* [[Image:Ordinateur.jpg|50px]] Un [[ordinateur]]
-
* [[Image:Arduino_Uno_logo.png|50px]] Le logiciel Arduino
+
* [[Image:Arduino_Uno_logo.png|50px]] Le logiciel [[Arduino]]
-
* [[Image:Buzzer.jpg|50px]] Un buzzer
+
* [[Image:Buzzer.jpg|50px]] Un [[buzzer]]
-
* [[Image:deux_fils.jpg|50px]] Deux fils
+
* [[Image:deux_fils.jpg|50px]] Deux [[fil électrique|fils électriques]]
-
* [[Image:breadBoard.jpg|50px]] Une breadboard
+
* [[Image:breadBoard.jpg|50px]] Une [[breadboard]]
== '''L'expérience''' ==
== '''L'expérience''' ==
-
==='''La manipulation'''===
+
=== ''Le montage électronique'' ===
-
* Rassembler les composants
+
 
-
* Relier, à l'aide d'un fil, la sortie 12 de l'Arduino à la borne + du buzzer
+
* Relier, à l'aide d'un fil, la sortie 12 de l'Arduino à la borne + du buzzer.
* Relier, avec l'autre fil, la sortie GND à la borne - du buzzer.
* Relier, avec l'autre fil, la sortie GND à la borne - du buzzer.
-
[[Image:Ensemble_monte.jpg|250px]]                          
+
[[Image:Ensemble_monte.jpg|250px]]
 +
                     
[[Image:montage_electronique.png|250px]]
[[Image:montage_electronique.png|250px]]
-
* Ouvrir le programme arduino, ouvrir le croquis
+
=== ''Le programme'' ===
 +
 
 +
* Ouvrir l'IDE arduino.
 +
* Télécharger le fichier source suivant :
 +
[[Média:Lecteur_melodie.ino|Code pour expérience "lecteur de mélodie"‎]]
 +
* '''OU''' créer un nouveau dossier "lecteur_melodie" et y inclure les fichiers suivant:
-
fichier : lecteur_melodie.ino
+
'' fichier : lecteur_melodie.ino ''
<pre>
<pre>
#include "duree.h"
#include "duree.h"
Ligne 36 : Ligne 44 :
/* Melodie - Berceuse Zelda */
/* Melodie - Berceuse Zelda */
float melodie[]={
float melodie[]={
-
   500,              // durée de la noir en ms
+
   500,              // durée de la noire en ms
-
   SI_3,BLANCHE, RE_4,NOIR, LA_3,BLANCHE, SOL_3,CROCHE, LA_3,CROCHE,
+
   SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, SOL_3,CROCHE, LA_3,CROCHE,
-
   SI_3,BLANCHE, RE_4,NOIR, LA_3,BLANCHE, MUTE,NOIR,
+
   SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, MUTE,NOIRE,
-
   SI_3,BLANCHE, RE_4,NOIR, LA_4,BLANCHE, SOL_4,NOIR,
+
   SI_3,BLANCHE, RE_4,NOIRE, LA_4,BLANCHE, SOL_4,NOIRE,
-
   RE_4,BLANCHE, DO_4,CROCHE, SI_3,CROCHE,  LA_4,BLANCHE, MUTE,NOIR,
+
   RE_4,BLANCHE, DO_4,CROCHE, SI_3,CROCHE,  LA_4,BLANCHE, MUTE,NOIRE,
-
   SI_3,BLANCHE, RE_4,NOIR, LA_3,BLANCHE, SOL_3,CROCHE, LA_3,CROCHE,
+
   SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, SOL_3,CROCHE, LA_3,CROCHE,
-
   SI_3,BLANCHE, RE_4,NOIR, LA_3,BLANCHE, MUTE,NOIR,
+
   SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, MUTE,NOIRE,
-
   SI_3,BLANCHE, RE_4,NOIR, LA_4,BLANCHE, SOL_4,NOIR,
+
   SI_3,BLANCHE, RE_4,NOIRE, LA_4,BLANCHE, SOL_4,NOIRE,
   RE_4,BLANCHE, RE_4,BLANCHE, MUTE, BLANCHE,
   RE_4,BLANCHE, RE_4,BLANCHE, MUTE, BLANCHE,
-
   RE_4,BLANCHE, DO_4,CROCHE, SI_3,CROCHE, DO_4,CROCHE, SI_3,CROCHE, SOL_3,BLANCHE,
+
   RE_4,BLANCHE, DO_4,CROCHE, SI_3, CROCHE, DO_4, CROCHE, SI_3,CROCHE, SOL_3,BLANCHE,
   DO_4,BLANCHE,  SI_3,CROCHE, LA_3,CROCHE, SI_3,CROCHE, LA_3,CROCHE, MI_3,BLANCHE,
   DO_4,BLANCHE,  SI_3,CROCHE, LA_3,CROCHE, SI_3,CROCHE, LA_3,CROCHE, MI_3,BLANCHE,
-
   RE_4,BLANCHE, DO_4,CROCHE, SI_3,CROCHE, DO_4,CROCHE, SI_3,CROCHE, SOL_3,NOIR, RE_4,NOIR,
+
   RE_4,BLANCHE, DO_4,CROCHE, SI_3,CROCHE, DO_4,CROCHE, SI_3,CROCHE, SOL_3,NOIRE, RE_4,NOIRE,
-
   SOL_4,BLANCHE, SOL_4,BLANCHE
+
   SOL_4, BLANCHE, SOL_4, BLANCHE
};
};
 +
/*  Initialisation */
/*  Initialisation */
Ligne 60 : Ligne 69 :
    
    
   int indexNote;
   int indexNote;
-
   int nombreNote = sizeof(melodie) / (2*sizeof(int));
+
   int nombreNote = sizeof(melodie) / (2*sizeof(float));
   int indexDerniereNote = nombreNote*2 - 1;
   int indexDerniereNote = nombreNote*2 - 1;
-
   int dureeNoir = melodie[0];
+
   int dureeNoire = melodie[0];
   for( indexNote=1; indexNote<=indexDerniereNote; indexNote+=2){
   for( indexNote=1; indexNote<=indexDerniereNote; indexNote+=2){
Ligne 68 : Ligne 77 :
       tone(PIN_BUZZER, melodie[indexNote]);
       tone(PIN_BUZZER, melodie[indexNote]);
     }
     }
-
     delay(melodie[indexNote + 1] * dureeNoir);
+
     delay(melodie[indexNote + 1] * dureeNoire);
     noTone(PIN_BUZZER);
     noTone(PIN_BUZZER);
   }
   }
Ligne 74 : Ligne 83 :
</pre>
</pre>
-
fichier : duree.h
+
'' fichier : duree.h ''
<pre>
<pre>
/* Definition des duree des notes */
/* Definition des duree des notes */
-
#define NOIR             1.000
+
#define NOIRE             1.000
-
#define BLANCHE          2.0*NOIR
+
#define BLANCHE          2.0*NOIRE
-
#define RONDE            4.0*NOIR
+
#define RONDE            4.0*NOIRE
-
#define CROCHE            NOIR/2.0
+
#define CROCHE            NOIRE/2.0
-
#define DOUBLE_CROCHE    NOIR/4.0
+
#define DOUBLE_CROCHE    NOIRE/4.0
-
#define QUADRUPLE_CROCHE  NOIR/8.0
+
#define QUADRUPLE_CROCHE  NOIRE/8.0
</pre>
</pre>
-
fichier : hauteur.h
+
'' fichier : hauteur.h ''
<pre>
<pre>
-
/* Definition des frequences des notes de musique  */
+
/* Définition des fréquences des notes de musique  */
#define MUTE    0
#define MUTE    0
Ligne 116 : Ligne 125 :
#define SI_4 987.77
#define SI_4 987.77
#define DO_5 1046.5
#define DO_5 1046.5
-
 
</pre>
</pre>
-
* Compiler le programme et le charger sur l'arduino.
+
* Compiler le programme et le charger sur l'Arduino.
-
==='''Que voit-on ?===
+
==='''Qu'entend-on ?'''===
-
Rien... Cependant on entend la mélodie écrite dans le programme.
+
 
 +
On entend la mélodie écrite dans le programme.
== '''Explications''' ==
== '''Explications''' ==
==='''De manière simple'''===
==='''De manière simple'''===
-
On utilise une fonction de l'arduino qui permet de faire varier un signal sur une sortie à une fréquence définie.
+
 
 +
On utilise une fonction de l'Arduino qui permet de faire varier un signal sur une sortie à une fréquence définie.
Brancher un buzzer sur cette sortie permet d'entendre un son.
Brancher un buzzer sur cette sortie permet d'entendre un son.
-
La hauteur d'une note de musique dépend de la fréquence de l'onde accoustique.
+
La hauteur d'une note de musique dépend de la fréquence de l'onde acoustique.
-
Une mélodie se joue en executant successivement plusieurs notes de fréquences différentes.
+
Une mélodie se joue en exécutant successivement plusieurs notes de fréquences différentes.
=== '''Questions sans réponses''' ===
=== '''Questions sans réponses''' ===
-
Comment faire du son stéréo ?
 
-
Comment pourrait-on le transformer en sonnette ?
+
* Comment faire du son stéréo ?
 +
* Comment pourrait-on le transformer en sonnette ?
 +
* Comment pourrait-on en faire une carte de vœux ?
 +
* Comment peut-on inclure un système de contrôle du volume ?
-
Comment pourrait-on en faire une carte de voeux ?
+
=== '''Allons plus loin dans l'explication''' ===
-
Comment peut-on inclure un système de volume ?
+
Pour modifier la mélodie jouée, il faut changer les données dans le tableau melodie[] de la façon suivante :
-
=== '''Allons plus loin dans l'explication''' ===
+
Le premièr élément correspond à la durée en millisecondes de la noire.
-
Développons les concepts scientifiques associés.
+
Ensuite chaque note tient sur deux éléments du tableau, avec en premièr la hauteur et ensuite la durée.
-
Ne pas hésiter à faire des liens avec Wikipédia.
+
 
 +
Les " #define " dans le code nous permettent d'utiliser pour les durées les notations suivante :
 +
* RONDE
 +
* BLANCHE
 +
* NOIRE
 +
* CROCHE
 +
* DOUBLE_CROCHE
 +
* QUADRUPLE_CROCHE
 +
et pour la hauteur les notations:
 +
* SOL_3 pour le sol de la clef de sol.
 +
* SOL_D_4 pour un sol dièse.
 +
* SOL_4 pour le sol une octave plus haut que le premier sol.
 +
* MUTE on utilise cette notation pour jouer un silence.
 +
 
 +
Par exemple pour jouer, avec la noire d'une durée de 400 millisecondes, la mélodie suivante :
 +
[[Image:partition_de_musique.png|700px]]
 +
 
 +
il faut écrire :
 +
<pre>
 +
float melodie[]={
 +
  400,              // durée de la noir en ms
 +
  LA_3,NOIRE, MI_3,CROCHE, FA_3,CROCHE,
 +
  SOL_3,CROCHE, LA_3,DOUBLE_CROCHE, SOL_3,DOUBLE_CROCHE, FA_3,CROCHE, MI_3,CROCHE,
 +
  RE_3,NOIRE, RE_3,CROCHE, FA_3,CROCHE,
 +
  LA,NOIR, SOL_3,CROCHE, FA_3,CROCHE,
 +
  MI_3,NOIRE, MUTE,CROCHE, FA_3,CROCHE, SOL_3,NOIRE, LA_3,NOIRE,
 +
  FA_3,NOIRE, RE_3,NOIRE, RE_3,NOIRE, MUTE,NOIRE,
 +
};
 +
</pre>
 +
 
 +
Maintenant à vous de jouer le virtuose !
== '''Liens avec d'autres expériences''' ==
== '''Liens avec d'autres expériences''' ==
==='''Expériences sur Wikidébrouillard'''===
==='''Expériences sur Wikidébrouillard'''===
-
Indiquer ici les expériences de Wikidébrouillard.
+
 
 +
[http://www.wikidebrouillard.org/index.php/Cat%C3%A9gorie:Arduino Catégorie Arduino]
==='''Autres expériences'''===
==='''Autres expériences'''===
 +
  Autres expériences avec le même concept, recherche sur internet (indiquer les liens).  
  Autres expériences avec le même concept, recherche sur internet (indiquer les liens).  
== '''Applications : liens avec le quotidien''' ==
== '''Applications : liens avec le quotidien''' ==
-
  C'est de la culture, ça aide à comprendre le monde !! N'hésitez pas à lancer la discussion de votre fiche (après l'avoir sauvegarder !) afin de trouver de l'aide pour la compléter
+
  C'est de la culture, ça aide à comprendre le monde ! N'hésitez pas à lancer la discussion de votre fiche (après l'avoir sauvegardée !) afin de trouver de l'aide pour la compléter.
-
 
+
-
== '''Lieux propices à sa réalisation''' ==
+
-
Indiquer ici des lieux où tout le matériel nécessaire pour réaliser cette expérience est disponible.
+
=='''Catégories'''==
=='''Catégories'''==
-
Penser à fixer les disciplines scientifiques qui correspondent à l'expérience. Remplacer "à classer" par la discipline correspondante.
 
-
[[Catégorie:à classer]]
 
-
[[Catégorie:Vidéo à réaliser]]
 
-
[[Catégorie:Orthographe et style à corriger]]
 
-
[[Catégorie:Contenus à développer]]
 
-
[[Catégorie:Fiche à Valider]]
 
[[Catégorie:expérience]]
[[Catégorie:expérience]]
 +
[[Catégorie:arduino]]
 +
[[Catégorie:électronique]]
 +
[[Catégorie:technique]]
 +
[[Catégorie:programmation]]
 +
[[Catégorie:informatique]]

Version actuelle en date du 28 février 2013 à 10:58

Article incomplet en cours de rédaction
Modèle:Vidéo


Sommaire

Présentation de l'expérience

Le but de l'expérience est de créer, avec un Arduino, un montage qui joue une mélodie prédéfinie.

Matériel

L'expérience

Le montage électronique

  • Relier, à l'aide d'un fil, la sortie 12 de l'Arduino à la borne + du buzzer.
  • Relier, avec l'autre fil, la sortie GND à la borne - du buzzer.

Le programme

  • Ouvrir l'IDE arduino.
  • Télécharger le fichier source suivant :

Code pour expérience "lecteur de mélodie"‎

  • OU créer un nouveau dossier "lecteur_melodie" et y inclure les fichiers suivant:

fichier : lecteur_melodie.ino

#include "duree.h"
#include "hauteur.h"

/* PINs */
#define PIN_BUZZER  12

/* Melodie - Berceuse Zelda */
float melodie[]={
  500,              // durée de la noire en ms
  SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, SOL_3,CROCHE, LA_3,CROCHE,
  SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, MUTE,NOIRE,
  SI_3,BLANCHE, RE_4,NOIRE, LA_4,BLANCHE, SOL_4,NOIRE,
  RE_4,BLANCHE, DO_4,CROCHE, SI_3,CROCHE,  LA_4,BLANCHE, MUTE,NOIRE,
  SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, SOL_3,CROCHE, LA_3,CROCHE,
  SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, MUTE,NOIRE,
  SI_3,BLANCHE, RE_4,NOIRE, LA_4,BLANCHE, SOL_4,NOIRE,
  RE_4,BLANCHE, RE_4,BLANCHE, MUTE, BLANCHE,
  RE_4,BLANCHE, DO_4,CROCHE, SI_3, CROCHE, DO_4, CROCHE, SI_3,CROCHE, SOL_3,BLANCHE,
  DO_4,BLANCHE,  SI_3,CROCHE, LA_3,CROCHE, SI_3,CROCHE, LA_3,CROCHE, MI_3,BLANCHE,
  RE_4,BLANCHE, DO_4,CROCHE, SI_3,CROCHE, DO_4,CROCHE, SI_3,CROCHE, SOL_3,NOIRE, RE_4,NOIRE,
  SOL_4, BLANCHE, SOL_4, BLANCHE
};


/*  Initialisation */
void setup(){
  pinMode(PIN_BUZZER, OUTPUT);
}

/* Programme Principal */
void loop(){
  
  int indexNote;
  int nombreNote = sizeof(melodie) / (2*sizeof(float));
  int indexDerniereNote = nombreNote*2 - 1;
  int dureeNoire = melodie[0];

  for( indexNote=1; indexNote<=indexDerniereNote; indexNote+=2){
    if(melodie[indexNote] != MUTE){
      tone(PIN_BUZZER, melodie[indexNote]);
    }
    delay(melodie[indexNote + 1] * dureeNoire);
    noTone(PIN_BUZZER);
  }
}

fichier : duree.h

/* Definition des duree des notes */

#define NOIRE              1.000
#define BLANCHE           2.0*NOIRE
#define RONDE             4.0*NOIRE
#define CROCHE            NOIRE/2.0
#define DOUBLE_CROCHE     NOIRE/4.0
#define QUADRUPLE_CROCHE  NOIRE/8.0

fichier : hauteur.h

/* Définition des fréquences des notes de musique  */

#define MUTE    0
#define	DO_3	261.63
#define	DO_D_3	277.18
#define	RE_3	293.66
#define	RE_D_3	311.13
#define	MI_3	329.63
#define	FA_3	349.23
#define	FA_D_3	369.99
#define	SOL_3	392
#define	SOL_D_3	415.3
#define	LA_3	440
#define	LA_D_3	466.16
#define	SI_3	493.88
#define	DO_4	523.25
#define	DO_D_4	554.37
#define	RE_4	587.33
#define	RE_D_4	622.25
#define	MI_4	659.26
#define	FA_4	698.46
#define	FA_D_4	739.99
#define	SOL_4	783.99
#define	SOL_D_4	830.61
#define	LA_4	880
#define	LA_D_4	932.33
#define	SI_4	987.77
#define	DO_5	1046.5
  • Compiler le programme et le charger sur l'Arduino.

Qu'entend-on ?

On entend la mélodie écrite dans le programme.

Explications

De manière simple

On utilise une fonction de l'Arduino qui permet de faire varier un signal sur une sortie à une fréquence définie.

Brancher un buzzer sur cette sortie permet d'entendre un son.

La hauteur d'une note de musique dépend de la fréquence de l'onde acoustique.

Une mélodie se joue en exécutant successivement plusieurs notes de fréquences différentes.

Questions sans réponses

  • Comment faire du son stéréo ?
  • Comment pourrait-on le transformer en sonnette ?
  • Comment pourrait-on en faire une carte de vœux ?
  • Comment peut-on inclure un système de contrôle du volume ?

Allons plus loin dans l'explication

Pour modifier la mélodie jouée, il faut changer les données dans le tableau melodie[] de la façon suivante :

Le premièr élément correspond à la durée en millisecondes de la noire. Ensuite chaque note tient sur deux éléments du tableau, avec en premièr la hauteur et ensuite la durée.

Les " #define " dans le code nous permettent d'utiliser pour les durées les notations suivante :

  • RONDE
  • BLANCHE
  • NOIRE
  • CROCHE
  • DOUBLE_CROCHE
  • QUADRUPLE_CROCHE

et pour la hauteur les notations:

  • SOL_3 pour le sol de la clef de sol.
  • SOL_D_4 pour un sol dièse.
  • SOL_4 pour le sol une octave plus haut que le premier sol.
  • MUTE on utilise cette notation pour jouer un silence.

Par exemple pour jouer, avec la noire d'une durée de 400 millisecondes, la mélodie suivante :

il faut écrire :

float melodie[]={
  400,              // durée de la noir en ms
  LA_3,NOIRE, MI_3,CROCHE, FA_3,CROCHE,
  SOL_3,CROCHE, LA_3,DOUBLE_CROCHE, SOL_3,DOUBLE_CROCHE, FA_3,CROCHE, MI_3,CROCHE,
  RE_3,NOIRE, RE_3,CROCHE, FA_3,CROCHE,
  LA,NOIR, SOL_3,CROCHE, FA_3,CROCHE,
  MI_3,NOIRE, MUTE,CROCHE, FA_3,CROCHE, SOL_3,NOIRE, LA_3,NOIRE,
  FA_3,NOIRE, RE_3,NOIRE, RE_3,NOIRE, MUTE,NOIRE,
};

Maintenant à vous de jouer le virtuose !

Liens avec d'autres expériences

Expériences sur Wikidébrouillard

Catégorie Arduino

Autres expériences

Autres expériences avec le même concept, recherche sur internet (indiquer les liens). 

Applications : liens avec le quotidien

C'est de la culture, ça aide à comprendre le monde ! N'hésitez pas à lancer la discussion de votre fiche (après l'avoir sauvegardée !) afin de trouver de l'aide pour la compléter.

Catégories

AR
EX

Lecteur de mélodie

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique