ARDX-Montages-CIRC06
Ce que nous faisons
.: Musique :.
.: Les éléments Piezo électriques :.
Jusqu'à maintenant nous avons contrôlé la lumière, le mouvement et les électrons. Attaquons nous maintenant au son.
Mais le son est un phénomène analogique, comment Arduino va t'il résoudre ce problème ?
Une fois encore, nous allons nous appuyer sur l'incroyable vitesse de traitement d'Arduino pour imiter le comportement analogique. Pour y arriver, nous allons raccorder un composant piezo sur une des broches digitales d'Arduino.
Un piezo fait un petit « clic » chaque fois qu'il est traversé par un courant. Si nous envoyons des impulsions à la bonne fréquence (par exemple, 440 fois par seconde pour obtenir un La (A)) ces « clics » combinés produiront une note.
Essayons donc d'expérimenter cette particularités et de faire jouer « A vous dirais-je maman » à notre Arduino.
Le montage
Le matériel nécessaire
2 Pin header
x4
Piezo Buzzer
x1
Tous ces éléments sont disponibles dans le Kit Ardx proposé sur shop.mchobby.be.
Schéma
Montage
Le code
Pas besoin de taper tout le code, vous pouvez télécharger ce programme depuis ardx.org/CODE06 et faire un copier/coller dans votre croquis.
/* Melody (cleft) 2005 D. Cuartielles pour K3 * * Cet exemple utilise un piezo pour jouer une * mélodie. Il envoie une onde carrée à la * fréquence adéquate pour générer la tonalité correspondante. * * Le calcul de la tonalité est fait en suivant * l'opération mathématique suivante: * * timeHigh = période/2 = 1/(2*FrequenceTonalité) * * Où les différentes tonalités sont spécifiées dans la table suivante: * * note Fréquence Période timeHigh * Do c 261 Hz 3830 1915 * Ré d 294 Hz 3400 1700 * Mi e 329 Hz 3038 1519 * Fa f 349 Hz 2864 1432 * Sol g 392 Hz 2550 1275 * La a 440 Hz 2272 1136 * Si b 493 Hz 2028 1014 * Do C 523 Hz 1912 956 * * http://www.arduino.cc/en/Tutorial/Melody */ int speakerPin = 9; int length = 15; // Le nombre de notes // Les notes. Un espace représente un blanc char notes[] = "ccggaagffeeddc "; // Rythme correspondant à chaque note int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 }; int tempo = 300; void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); } } void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // Jouer la tonalité correspondant à une note for (int i = 0; i < 8; i++) { if (names[i] == note) { playTone(tones[i], duration); } } } void setup() { pinMode(speakerPin, OUTPUT); } void loop() { for (int i = 0; i < length; i++) { if (notes[i] == ' ') { delay(beats[i] * tempo); // Attendre } else { playNote(notes[i], beats[i] * tempo); } // Pause entre deux notes delay(tempo / 2); } }
Cela ne fonctionne pas?
Voici 3 choses à essayer.
Pas de son?
Etant donné la taille et la forme d'un piezo (un gros cylindre). Il est facile de le placer dans le mauvais trou sur le breadboard.
Vérifiez son emplacement.
Arrêter la mélodie
Je n'arrive plus à penser pendant qu'Arduino joue une mélodie
Il suffit de débrancher le piezo pendant que vous êtes occupé.
Ensuite, chargez votre nouveau programme et rebranchez le piezo
Une autre mélodie
Fatigué d'entendre « A vous dirais- je maman » ?
Le code est écrit de telle sorte qu'il vous sera facile d'ajouter vos propres mélodies.
Jetez un coup d'œil sur la section ci-dessous.
Faire encore mieux
Modifier la vitesse
Le temps de chaque note est calculé à l'aide de variables de telle sorte que nous pouvons modifier le son de chaque note ainsi que le temps de chaque note. Pour changer la vitesse d'une mélodie, il ne faut changer qu'une ligne.
int tempo=300; ---> int tempo=(nouvelle_valeur)
Utiliser une valeur plus grande pour ralentir la mélodie et une plus petite valeur pour l'accélérer.
Adapter les notes
Si vous trouvez que les notes ne correspondent pas bien à la mélodie, cela peut également être corrigé. Les notes sont calculées sur base de la formule décrite dans les commentaires du programme. Pour ajuster une note, il suffit de modifier sa valeur correspondante dans le tableau notes[]. Chaque note correspond à la position de son nom dans e tableau names[].
Par exemple c Do = 1915.
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a','b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
Composez vos propres mélodies
Le programme est configuré pour jouer « Ah vous dirais-je maman », cependant, il est développé de sorte à pouvoir la changer facilement. Chaque chanson est définie à l'aide d'un entier et de deux tableaux. L'entier indique le nombre de notes, le premier tableau (notes[]) contient les notes et le rythme de chaque note (temps pendant lequel la note est jouée) dans le second (beats[]).
Quelques exemples:
- Ah! vous dirai-je, maman
int length = 15; char notes[] = {"ccggaagffeeddc "}; int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
- Joyeux anniversaire (premier couplet)
int length = 13; char notes[] = {"ccdcfeccdcgf "}; int beats[] = {1,1,1,1,1,2,1,1,1,1,1,2,4};
Plus, plus et encore plus
Plus d'information, où poser vos autres questions ardx.org/CIR06 (anglais)
Internet
.:téléchargement:.
LA fiche de montage est disponible sur ardx.org/BBLS06
.: Vidéo :.
La vidéo du montage est disponible sur ardx.org/VIDE13 (anglais)
Tutoriel/Manuel traduit par Meurisse D. pour MCHobby.be licence Creative Commons BY-SA.
Crédit de traduction
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant :
« Traduction par MCHobby (shop.MCHobby.be) - Vente de kit et composants » et ce quelque soit le média utilisé.
Utilisation commerciale
L'utilisation commercial de cette traduction (y compris sur site produisant des revenus par l'intermédiaire de publicité), même partielle, est soumise à redevance (license fee).
Le présent manuel a été traduit et autorisé à la vente avec l'aimable autorisation conjointe de Oomlout (www.oomlout.com) et d'AdaFruit (www.adafruit.com).
Produit sous licence Creative Commons BY-SA License and available for download: ardx.org/src/