Ligne 1 : |
Ligne 1 : |
| {{ARDX-NAV}} | | {{ARDX-NAV}} |
| | | |
− | {{traduction}}
| + | == Ce que nous faisons == |
| + | '''.: Musique :.''' |
| | | |
− | == Ce que faisons nous ==
| + | '''.: Les éléments Piezo électriques :.''' |
− | .: Musique :. | |
− | | |
− | .: Le s éléments Piezo électriques :.
| |
| | | |
| {{bloc-etroit|text=Jusqu'à maintenant nous avons contrôlé la lumière, le mouvement et les électrons. Attaquons nous maintenant au son. | | {{bloc-etroit|text=Jusqu'à maintenant nous avons contrôlé la lumière, le mouvement et les électrons. Attaquons nous maintenant au son. |
Ligne 23 : |
Ligne 21 : |
| | | |
| {{ARDX-composant | | {{ARDX-composant |
− | |label=Fiche de montage CIRC-01 | + | |label=Fiche de montage CIRC-06 |
| |label2=x1 | | |label2=x1 |
| |img=ARDX-circ-sheet.png | | |img=ARDX-circ-sheet.png |
Ligne 51 : |
Ligne 49 : |
| | | |
| {{ARDX-composant-end}} | | {{ARDX-composant-end}} |
| + | Tous ces éléments sont disponibles dans [http://shop.mchobby.be/product.php?id_product=11 le Kit Ardx proposé sur shop.mchobby.be]. |
| | | |
| === Schéma === | | === Schéma === |
Ligne 59 : |
Ligne 58 : |
| | | |
| == Le code == | | == Le code == |
− | xxx
| + | Pas besoin de taper tout le code, vous pouvez télécharger ce programme depuis [http://ardx.org/CODE06 ardx.org/CODE06] et faire un copier/coller dans votre croquis. |
| + | |
| + | <nowiki>/* 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); |
| + | } |
| | | |
− | <nowiki>/* code */</nowiki>
| + | // Pause entre deux notes |
| + | delay(tempo / 2); |
| + | } |
| + | }</nowiki> |
| | | |
| == Cela ne fonctionne pas? == | | == Cela ne fonctionne pas? == |
| Voici 3 choses à essayer. | | Voici 3 choses à essayer. |
− | === xxx 1 === | + | === Pas de son? === |
− | yyyy
| + | 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 » ?''' |
| | | |
− | === xxx 2 ===
| + | Le code est écrit de telle sorte qu'il vous sera facile d'ajouter vos propres mélodies. |
− | yyyy
| |
| | | |
− | === xxx 3 ===
| + | Jetez un coup d'œil sur la section ci-dessous. |
− | yyyy
| |
| | | |
| == Faire encore mieux == | | == Faire encore mieux == |
− | === zzz 1 === | + | === Modifier la vitesse === |
− | zzzz
| + | 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. |
| + | |
| + | <nowiki>int tempo=300; ---> int tempo=(nouvelle_valeur)</nowiki> |
| + | |
| + | 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 {{fname|notes[]}}. Chaque note correspond à la position de son nom dans e tableau {{fname|names[]}}. |
| + | |
| + | Par exemple c Do = 1915. |
| + | |
| + | <nowiki>char names[] = { 'c', 'd', 'e', 'f', 'g', 'a','b', 'C' }; |
| + | |
| + | int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; </nowiki> |
| + | |
| + | === 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 ({{fname|notes[]}}) contient les notes et le rythme de chaque note (temps pendant lequel la note est jouée) dans le second ({{fname|beats[]}}). |
| + | |
| + | {{underline|Quelques exemples:}} |
| + | * Ah! vous dirai-je, maman |
| + | <nowiki>int length = 15; |
| + | char notes[] = {"ccggaagffeeddc "}; |
| + | int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };</nowiki> |
| + | * Joyeux anniversaire (premier couplet) |
| + | <nowiki>int length = 13; |
| + | char notes[] = {"ccdcfeccdcgf "}; |
| + | int beats[] = {1,1,1,1,1,2,1,1,1,1,1,2,4};</nowiki> |
| | | |
| == Plus, plus et encore plus == | | == Plus, plus et encore plus == |
− | Plus d'information, où poser vos autres questions: | + | Plus d'information, où poser vos autres questions [http://ardx.org/CIRC06 ardx.org/CIR06] (''anglais'') |
− | | |
− | [http://ardx.org/CIRC13 ardx.org/CIR06] (''anglais'') | |
| | | |
| == Internet == | | == Internet == |