(→La manipulation) |
m |
||
(49 versions intermédiaires masquées) | |||
Ligne 1 : | Ligne 1 : | ||
{{avertissement}} | {{avertissement}} | ||
- | {{vidéo|numérovidéo = <videoflash type="mediaspip" num = 1> | + | {{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''' == | ||
- | ==='' | + | === ''Le montage électronique'' === |
- | + | ||
- | * 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'' === |
+ | |||
+ | * 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 : | + | '' 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 noire en ms | |
- | SI_3, BLANCHE, RE_4, | + | SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, SOL_3,CROCHE, LA_3,CROCHE, |
- | SI_3, BLANCHE, RE_4, | + | SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, MUTE,NOIRE, |
- | SI_3, BLANCHE, RE_4, | + | 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, | + | RE_4,BLANCHE, DO_4,CROCHE, SI_3,CROCHE, LA_4,BLANCHE, MUTE,NOIRE, |
- | SI_3, BLANCHE, RE_4, | + | SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, SOL_3,CROCHE, LA_3,CROCHE, |
- | SI_3,BLANCHE, RE_4, | + | SI_3,BLANCHE, RE_4,NOIRE, LA_3,BLANCHE, MUTE,NOIRE, |
- | SI_3, BLANCHE, RE_4, | + | 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, | + | 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 nombreNote = sizeof(melodie) / (2*sizeof(float)); |
int indexDerniereNote = nombreNote*2 - 1; | int indexDerniereNote = nombreNote*2 - 1; | ||
- | int | + | 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] * | + | 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 | + | #define NOIRE 1.000 |
- | #define BLANCHE 2.0* | + | #define BLANCHE 2.0*NOIRE |
- | #define RONDE 4.0* | + | #define RONDE 4.0*NOIRE |
- | #define CROCHE | + | #define CROCHE NOIRE/2.0 |
- | #define DOUBLE_CROCHE | + | #define DOUBLE_CROCHE NOIRE/4.0 |
- | #define QUADRUPLE_CROCHE | + | #define QUADRUPLE_CROCHE NOIRE/8.0 |
</pre> | </pre> | ||
- | fichier : hauteur.h | + | '' fichier : hauteur.h '' |
<pre> | <pre> | ||
- | /* | + | /* 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' | + | * Compiler le programme et le charger sur l'Arduino. |
- | ===''' | + | ==='''Qu'entend-on ?'''=== |
- | + | ||
+ | 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. | ||
+ | |||
+ | 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''' === | === '''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''' === | === '''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 : | ||
+ | [[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'''=== | ||
- | + | ||
+ | [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 | + | 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'''== | =='''Catégories'''== | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
[[Catégorie:expérience]] | [[Catégorie:expérience]] | ||
+ | [[Catégorie:arduino]] | ||
+ | [[Catégorie:électronique]] | ||
+ | [[Catégorie:technique]] | ||
+ | [[Catégorie:programmation]] | ||
+ | [[Catégorie:informatique]] |
Sommaire |
Le but de l'expérience est de créer, avec un Arduino, un montage qui joue une mélodie prédéfinie.
Code pour expérience "lecteur de mélodie"
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
On entend la mélodie écrite dans le programme.
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.
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 :
et pour la hauteur les notations:
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 !
Autres expériences avec le même concept, recherche sur internet (indiquer les liens).
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.
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique