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 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 :

Breadboard - Self-Adhesive (White)

Breadboard - Self-Adhesive (White)

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

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

PRT-12795
$2.10
2
SparkFun Sound Detector

SparkFun Sound Detector

SEN-12642
$11.95
20
LED - RGB Clear Common Cathode

LED - RGB Clear Common Cathode

COM-00105
$2.25
3

Resistor 100 Ohm 1/4th Watt PTH - 20 pack

COM-13761
Retired

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

Arduino 101

DEV-13787
9 Retired

Genuino 101

DEV-13984
Retired

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

alt text

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.

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 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 !

alt text

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.