Mise en oeuvre - Chapitre 3 (nouvelle version)

Le forum du Snootlab Starter Kit

Mise en oeuvre - Chapitre 3 (nouvelle version)

Message non lude Laetitia » Lun 17 Déc 2012 18:59

Bonjour,

Aujourd'hui nous allons apprendre à fabriquer un générateur de sons !
La fréquence du son produit sera déterminée par un potentiomètre à glissière, le volume par un potentiomètre rotatif et enfin un bouton poussoir permettra d'arrêter et de remettre en marche le son.

- MATÉRIEL -

- Arduino Uno (x1)
- Breadboard (x2)
- Potentiomètre rotatif (x1)
- Potentiomètre à glissière (x1)
- Résistances 150 Ohms (x2)
- Résistances 1 KOhms (x1)
- Bouton poussoir (x1)
- Buzzer piezo (x1)

- SCHÉMA -

Schema_STK_ch3.png
Schema_STK_ch3.png (45.41 Kio) Vu 765 fois

Petite précision sur le montage du potentiomètre à glissière : retournez-le, vous avez 3 pins notées 1, 2 et 3 : les 1 & 3 vont au VCC (+5V) et GND, la 2 est celle que vous allez connecter à l'Arduino ;)

- CODE -

Code: Tout sélectionner
/*
 Starter Kit - Chapitre 3 (nouvelle version)
 Générateur de sons variables en fréquence et intensité, avec bouton ON/OFF
 */

// Déclaration des pins auxquelles sont attachées les différents composants
#define pot 0       // potentiomètre linéaire > A0
#define buzzer 5    // potentiomètre rotatif + buzzer > D5

int frequence = 0;  // valeur lue sur le potentiomètre linéaire
boolean mode = 1;   // marche/arrêt : mode = 0 -> arrêt du son, mode = 1 -> son joué

void setup()
{
  pinMode(buzzer, OUTPUT);
 
  attachInterrupt(1, modeSelect, RISING); // interruption n°1 située sur pin 3 de l'Arduino
}

void loop()
{
  frequence = analogRead(pot);   // valeur comprise entre 0 et 1023
  frequence *= 5;                // multipliée pour avoir une plage de fréquences allant de 0 à 5KHz
 
  if (mode == 0)
  {
    tone(buzzer, frequence);
  }
  else
  {
    noTone(buzzer);
  }
}

void modeSelect(void)
{
  // l'interruption sert à changer la valeur de la variable marche/arrêt :
  // il suffit de lui imposer l'état inverse puisqu'on a choisi une variable booléenne !
  mode = !mode;
}



- EXPLICATIONS -

Fréquence du signal
Le potentiomètre à glissière produit une tension variable, que l'on récupère sous format numérique sur la pin A0 de l'Arduino. Elle est ensuite multipliée avant d'être envoyé vers le buzzer pour passer d'une plage de valeurs comprise entre 0 et 1023 Hz à une plage allant de 0 à 5.115 KHz : les variations étant suffisamment importantes le changement de hauteur du son est plus facilement audible !

Volume
Le potentiomètre rotatif joue le rôle de bouton de volume : pas besoin de le relier à l'Arduino dans ce montage, en le plaçant entre le buzzer et l'alimentation (pin D5) il permet de réguler directement l'intensité du courant arrivant sur le buzzer, donc le volume.

Marche/Arrêt
Les interruptions sont très utiles lorsqu'on a besoin qu'une action particulière soit prise en compte sans perturber le déroulement du reste du programme. Ici nous avons donc fait ce choix pour gérer le mode marche/arrêt : paramétrée pour se déclencher quand le bouton passe de l'état bas à l'état haut (RISING), elle intervient juste sur une variable qui détermine le mode à sélectionner dans la loop().

C'est tout pour cette fois ! J'espère que ce tutoriel vous aura plu, et bonne bidouille en attendant le prochain !
If it's itchy, scratch it !
Laetitia
 
Messages: 41
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Retourner vers Starter Kit

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron