SIK Experiment Guide for the Arduino 101/Genuino 101 Board (French)

This Tutorial is Retired!

This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.

Pages
Contributors: D___Run___
Favorited Favorite 0

Expérience 14 : Utiliser un avertisseur piézoélectrique

Introduction

Dans cette expérience, vous allez encore relier le monde numérique au monde analogique. Nous allons utiliser un avertisseur piézoélectrique qui émet un petit « clic » quand vous appliquez une tension. En soi, cela n'a rien de terriblement excitant, mais si vous activez et désactivez la tension des centaines de fois chaque seconde, l'avertisseur piézoélectrique produit un son. Plusieurs sons ensemble créent de la musique ! Ce circuit et ce sketch vont jouer un morceau classique. Comme nous ne vous laissons jamais tomber,

nous avons aussi ajouté un bouton en série avec l'avertisseur. Pourquoi ? Parce que tout bon créateur de bruits a besoin d'un bouton Sourdine ! Pour pouvoir entendre le morceau joué par votre carte 101 en utilisant l'avertisseur, vous devez appuyer sur le bouton et le maintenir enfoncé. Pour rendre l'avertisseur muet, il vous suffit de relâcher le bouton.

Composants nécessaires

Vous aurez besoin des composants suivants :

  • 1 plaque Breadboard
  • 1 carte Arduino 101 ou Genuino 101
  • 1 avertisseur piézoélectrique
  • 1 bouton-poussoir
  • 5 cavaliers

Vous n'avez pas le SIK ?

Pour réaliser cette expérience sans le SIK, nous vous suggérons d'utiliser les composants suivants :

Breadboard - Self-Adhesive (White)

Breadboard - Self-Adhesive (White)

PRT-12002
$4.95
41
Jumper Wires - Connected 6" (M/M, 20 pack)

Jumper Wires - Connected 6" (M/M, 20 pack)

PRT-12795
$1.95
2
Mini Speaker - PC Mount 12mm 2.048kHz

Mini Speaker - PC Mount 12mm 2.048kHz

COM-07950
$1.95
5
Momentary Pushbutton Switch - 12mm Square

Momentary Pushbutton Switch - 12mm Square

COM-09190
$0.50
4

Vous aurez également besoin d'une carte Arduino 101 ou Genuino 101.

Arduino 101

DEV-13787
9 Retired

Genuino 101

DEV-13984
Retired

Présentation de l'avertisseur piézoélectrique

alt text

L'avertisseur est un petit composant contenant un morceau de métal qui se déplace quand vous appliquez une tension. Ce mouvement crée un petit son (un « clic »). Si vous activez et désactivez la tension suffisamment vite, vous obtenez différents bips, crissements, gazouillements et bourdonnements. Vous utiliserez la broche PWM pour contrôler la vitesse d'allumage/coupure de l'avertisseur et, par conséquent, la fréquence audio qui sort de l'avertisseur. En réglant la PWM, vous légitimez les notes qui sortent de l'avertisseur.

alt text

Si vous retournez l'avertisseur et regardez en bas, vous voyez qu'une broche a un (+) à côté d'elle. Cette broche se connecte à un signal à partir d'une broche PWM. L'autre broche doit être connectée à la terre.

Branchement du matériel

Vous êtes prêt à tout raccorder ? Consultez le schéma de câblage ci-dessous pour savoir comment faire.

Faites particulièrement attention aux marquages indiquant comment placer les composants sur la plaque breadboard, car les composants polarisés ne peuvent être connectés à un circuit que dans une direction.

Schéma de câblage de l'expérience

alt text

Pour agrandir le circuit, cliquez sur le schéma.

Ouverture du sketch

Ouvrez l'EDI Arduino sur votre ordinateur. Le codage en langage Arduino contrôlera votre circuit. Ouvrez le code du Circuit 14 en accédant au « Code du guide SIK 100 » que vous avez précédemment téléchargé et placé dans votre dossier « Examples ».

Pour ouvrir le code, cliquez sur : File > Examples > SIK Guide Code > Circuit_14

Vous pouvez également copier et coller le code suivant dans l'EDI Arduino. Cliquez sur Télécharger et observez ce qu'il se passe.

language:cpp
/*
SparkFun Inventor's Kit
Example sketch 14

BUZZER

  Use the buzzer to play a song!

This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
(This sketch was originally developed by D. Cuartielles for K3)
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn more about Arduino.

*/

/*
This sketch uses the buzzer to play songs.
The Arduino's tone() command will play notes of a given frequency.
We'll provide a function that takes in note characters (a-g),
and returns the corresponding frequency from this table:

  note  frequency
  c     262 Hz
  d     294 Hz
  e     330 Hz
  f     349 Hz
  g     392 Hz
  a     440 Hz
  b     494 Hz
  C     523 Hz

For more information, see http://arduino.cc/en/Tutorial/Tone
*/

const int buzzerPin = 9;

// We'll set up an array with the notes we want to play
// change these values to make different songs!

// Length must equal the total number of notes and spaces

const int songLength = 18;

// Notes is an array of text characters corresponding to the notes
// in your song. A space represents a rest (no tone)

char notes[] = "cdfda ag cdfdg gf "; // a space represents a rest

// Beats is an array of values for each note and rest.
// A "1" represents a quarter-note, 2 a half-note, etc.
// Don't forget that the rests (spaces) need a length as well.

int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};

// The tempo is how fast to play the song.
// To make the song play faster, decrease this value.

int tempo = 150;

void setup()
{
  pinMode(buzzerPin, OUTPUT);
}

void loop()
{
  int i, duration;

  for (i = 0; i < songLength; i++) // step through the song arrays
  {
    duration = beats[i] * tempo;  // length of note/rest in ms

    if (notes[i] == ' ')          // is this a rest?
    {
      delay(duration);            // then pause for a moment
    }
    else                          // otherwise, play the note
    {
      tone(buzzerPin, frequency(notes[i]), duration);
      delay(duration);            // wait for tone to finish
    }
    delay(tempo/10);              // brief pause between notes
  }

  // We only want to play the song once, so we'll pause forever:
  while(true){}
  // If you'd like your song to play over and over,
  // remove the above statement
}

int frequency(char note)
{
  // This function takes a note character (a-g), and returns the
  // corresponding frequency in Hz for the tone() function.

  int i;
  const int numNotes = 8;  // number of notes we're storing

  // The following arrays hold the note characters and their
  // corresponding frequencies. The last "C" note is uppercase
  // to separate it from the first lowercase "c". If you want to
  // add more notes, you'll need to use unique characters.

  // For the "char" (character) type, we put single characters
  // in single quotes.

  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};

  // Now we'll search through the letters in the array, and if
  // we find it, we'll return the frequency for that note.

  for (i = 0; i < numNotes; i++)  // Step through the notes
  {
    if (names[i] == note)         // Is this the one?
    {
      return(frequencies[i]);     // Yes! Return the frequency
    }
  }
  return(0);  // We looked through everything and didn't find it,
              // but we still need to return a value, so return 0.
}

À propos du code

char notes[] = "cdfda ag cdfdg gf ";

char names[] = {'c','d','e','f','g','a','b','C'};

Jusqu'à présent, nous avons uniquement travaillé avec des données numériques, mais la carte Arduino fonctionne également avec du texte. Les caractères (simples, imprimables, lettres, chiffres et autres symboles) possèdent leur propre type appelé « char ». Quand vous disposez d'un tableau de caractères, il peut être défini entre des guillemets doubles (on les appelle également une « chaîne ») OU sous forme de liste de caractères avec guillemet simple.

tone(pin, frequency, duration);

La fonction tone() représente l'une des commandes les plus utiles intégrées à Arduino. Elle pilote une broche de sortie à une certaine fréquence, ce qui en fait une fonction parfaite pour les avertisseurs et les haut-parleurs. Si vous lui attribuez une durée (en millisecondes), elle jouera le son, puis s'arrêtera. Si vous ne lui attribuez pas de durée, elle jouera le son à l'infini (mais vous pouvez l'arrêter avec la fonction noTone()).

Ce que vous devez voir

Pour commencer, il ne s'agit pas de ce que vous devez voir, mais de ce que vous devez entendre ! Vous devez entendre une musique si vous appuyez sur le bouton et le maintenez enfoncé dès que le sketch est téléchargé. Si le morceau n'est pas complet ou si vous avez l'impression de ne rien entendre, appuyez sur le bouton de réinitialisation et maintenez le bouton-poussoir enfoncé.

Si cela ne fonctionne pas, vérifiez que vous avez monté correctement le circuit, vérifié et téléchargé le code sur votre carte. SI le problème persiste, consultez la section Dépannage.

alt text

Dépannage

Pas de son

Étant donné la taille et la forme de l'avertisseur piézoélectrique, il est facile de rater les bons orifices sur la plaque breadboard. Vérifiez qu'il est bien positionné

et que le bouton-poussoir est correctement câblé. S'il est mal câblé, le circuit ne sera jamais complet, que vous appuyiez ou non sur le bouton.

Le morceau ne semble être joué qu'en partie

Vous n'entendez qu'une partie du morceau quand vous appuyez sur le bouton et le maintenez enfoncé. Pour recommencer le morceau, appuyez sur le bouton de réinitialisation (MASTER RESET) sur la carte 101 tout en appuyant sur le bouton Sourdine.

SI vous vous sentez d'humeur créatrice...

Le code est écrit pour vous permettre d'ajouter facilement vos propres morceaux. N'attendez pas pour composer !