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.
Expérience 15 : Utiliser le détecteur de son
Introduction
Dans les expériences précédentes, vous avez utilisé différentes entrées analogiques. Vous allez maintenant considérer le son comme une entrée et utiliser le détecteur de son SparkFun. La sortie Envelope sur la carte vous permettra de mesurer le niveau sonore de la pièce. Vous utiliserez ensuite un code sophistiqué appelé switch case pour changer la couleur et la LED RVB en conséquence.
Nous appelons cet appareil notre compteur de bruit. Si les choses ne se déroulent pas comme prévu, vous verrez rouge !
Composants nécessaires
Vous aurez besoin des composants suivants :
- 1 plaque Breadboard
- 1 carte Arduino 101 ou Genuino 101
- 3 résistances 100 Ω
- 1 LED RVB à cathode commune
- 1 détecteur de son SparkFun
- 9 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 :
Vous aurez également besoin d'une carte Arduino 101 ou Genuino 101.
Lectures suggérées
Avant de poursuivre cette expérience, nous vous recommandons de vous familiariser avec les concepts des tutoriels suivants :
Présentation du détecteur de son
Le détecteur de son est un petit capteur très utile ! Ce circuit de microphone vous épargne pas mal de câblage. Une fois la carte raccordée à l'alimentation (3,3 V) sur la broche VCC et la terre à la broche GND, vous disposez de trois options pour utiliser différents signaux comme des entrées pour la carte 101.
Le premier signal, GATE, est un signal numérique qui s'active quand le son ambiant dépasse un certain seuil. Une LED est également reliée à GATE sur le détecteur de son. Quand vous l'avez correctement mise sous tension et faites du bruit, la LED rouge s'allume s'il y a du bruit et s'éteint si la pièce est silencieuse.
Le second signal, ENVELOPE, évalue l'amplitude (niveau sonore) avec une valeur 10 bits comprise entre 0 et 1023. Dans une pièce silencieuse, ce niveau se trouve à environ 10.
Le premier signal est le signal AUDIO brut. Dans une pièce silencieuse, son niveau se trouve aux alentours de 512. Nous générerons une courbe en forme d'onde basée sur la fréquence du son ambiant. Le signal AUDIO brut vous sera utile si vous souhaitez effectuer du traitement audio plus avancé que les expériences de ce guide. Pour une description plus détaillée du détecteur de son, consultez notre guide de branchement.
Branchement du matériel
Vous êtes prêt à tout raccorder ? Consultez le schéma de câblage ci-dessous pour savoir comment faire.
Composants polarisés | 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
Ouverture du sketch
Ouvrez l'EDI Arduino sur votre ordinateur. Le codage en langage Arduino contrôlera votre circuit. Ouvrez le code du Circuit 15 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 >101 SIK Guide Code > Circuit_15
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 15
SOUND DETECTOR
Use the sound detector to measure the volume of the surrounding area and change the
color of an RGB based on that volume.
//pin variables
const int redPin = 5;
const int greenPin = 6;
const int bluePin = 9;
const int soundPin = 0;
//variables for storing raw sound and scaled value
int sound;
int scale;
void setup()
{
//start the serial port a@ 9600bps
Serial.begin(9600);
//set RGB pins to OUTPUT
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop()
{
//read and store the audio from Envelope pin
sound = analogRead(soundPin);
//map sound which in a quiet room a clap is 300
//from 0 to 3 to be used with switch case
scale = map(sound, 0, 300, 0, 3);
//print values over the serial port for debugging
Serial.print(sound);
Serial.print(" ");
Serial.println(scale);
//switch case on scaled value
switch (scale)
{
//if 0 RGB = Blue
case 0:
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, HIGH);
break;
//if 1 RGB = Green
case 1:
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, LOW);
break;
//if 2 RGB = Yellow
case 2:
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, LOW);
break;
//if 3 RGB = Red
case 3:
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
break;
//default off
default:
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
break;
}
}
À propos du code
scale = map(sound,0,300,0,3
Ce code peut vous sembler constituer une association étrange de valeurs. Cette expérience convient à l'utilisation de la condition switch case, qui permet de réduire un grand ensemble de valeurs à trois ou quatre choix. Cette fonction permet également de faire le contraire, mais elle est surtout utile pour créer des fourchettes de valeurs associées à une condition switch case.
switch(value)
{
case(0):
//do something
break;
case(1):
//do something else
break;
default:
//do another thing
break;
}
La condition switch case prend tout son sens avec la longue chaîne de déclarations if else()
dont vous avez besoin pour réaliser une action basée sur une fourchette de valeurs. switch() recherche une variable, puis cherche le cas correspondant dans une liste. Si elle n'en trouve pas, elle utilise le paramètre par défaut. Chaque cas possède également sa commande break, qui permet à Arduino de sortir de la boucle et de poursuivre.
Ce que vous devez voir
Une fois le code téléchargé et le sketch démarré, la LED RVB doit s'allumer en bleu. Faites beaucoup de bruit : la LED RVB doit passer du bleu au vert puis au jaune. Si vous êtes vraiment bruyant, elle peut même passer au rouge. Ne vous inquiétez pas, nous n'appellerons pas la police !
Dépannage
La LED ne passe pas au jaune ni au rouge
Ouvrez votre moniteur série pour effectuer un débogage. Vérifiez la valeur correspondant à une pièce silencieuse, puis faites du bruit. Modifiez la fonction map pour vous assurer que la fourchette est identique.
Le détecteur de son transmet des valeurs étranges
Vérifiez que le détecteur de son est branché à l'alimentation (3,3 V) et que vous lisez la broche Envelope.
Ne fonctionne toujours pas
Il arrive que la carte Arduino 101 se déconnecte de l'ordinateur. Essayez de la débrancher puis de la rebrancher au port USB.