Différences entre versions de « ARDX-Montages-CIRC06 »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 59 : Ligne 59 :
  
 
== 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>/* code */</nowiki>
+
  <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);
 +
      }
 +
 
 +
      // Pause entre deux notes
 +
      delay(tempo / 2);
 +
  }
 +
}</nowiki>
  
 
== Cela ne fonctionne pas? ==
 
== Cela ne fonctionne pas? ==

Version du 13 septembre 2015 à 20:18


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Ce que faisons nous

.: Musique :.

.: Le s é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

ARDX-circ-sheet.png

Fiche de montage CIRC-01
x1

ARDX-pin-header.png

2 Pin header
x4

ARDX-Piezo.png

Piezo Buzzer
x1

 

Schéma

Circ06-schema.png

Montage

Cir06-montage.png

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.

xxx 1

yyyy

xxx 2

yyyy

xxx 3

yyyy

Faire encore mieux

zzz 1

zzzz

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/