Créer des sons avec Arduino. Buzzer.

Créer de sons avec Arduino. Buzzer
Créer de sons avec Arduino. Buzzer

Dans ce tutoriel on apprendra à créer de sons avec la plaque d’Arduino. On va utiliser un signal électrique por faire vibrer la membrane du buzzer appliquant la fonction pinMode(). Nous allons aussi pratiquer autres fonctionnes comme tone() et noTone() pour arriver à réaliser une sirène d’urgence.

Sons avec Arduino.

Avant tout nous devons comprendre le principe électrique de production du son. L’onde sonore est représentée en électronique comme un signal carré où il faudra repérer la hauteur de l’onde (sa puissance) et la longueur de l’onde (sa fréquence):

  • La fréquence -> mesurée en Hz, elle peut se classer en basse fréquence et haute fréquence. L’ouïe humain peut détecter des fréquences entre 20 Hz et 20 KHz.
  • La puissance -> mesurée en volts, elle nous dit la quantité de volume que nous écoutons.

Les dispositifs qui transforment le signal électrique en onde acoustique s’appellent transducteurs électroacoustiques comme par exemple un petit haut parleur, un buzzer, un vibreur ou un piezzo.

Produire de sons avec un buzzer.

Un vibreur ou buzzer est un dispositif qui permet de tourner un signal électrique en onde sonore. Il contient une partie vibrante qui peut passer d’une position basse à une position haute. Il s’agit d’un transducteur piézoélectrique, il a la propiété de faire vibrer une membrane quand le matériel piézoélectrique est traversé par un signal électrique.

Dans ce premier projet on essaiera de produire un son avec la fonction digitalWrite(), alternant les valeurs high et low.

il est nécessaire:

  • Arduino Uno ou équivalent.
  • Breadboard.
  • Buzzer.
  • Fils.
  • Résistance de 220 Oh.

Schéma:

Connexion du buzzer à la plaque d'Arduino, cablage.
Connexion du buzzer à la plaque d’Arduino

On connecte la borne négative au pin GND de la plaque et la borne positive au pin 8 par le biais d’une résistance.

Code:

void setup (){
  pinMode (8, OUTPUT); //Pin relié au buzzer et configuré comme sortie
}
void loop (){
  digitalWrite (8, HIGH);
  delayMicroseconds (5000);
  digitalWrite (8, LOW);
  delayMicroseconds (100000);
}

Dans la fonction setup() on configure le pin 8 comme sortie de tension (output). Dans la boucle loop() on fait passer le courant à travers du buzzer pendant 5 secondes, on coupe le courant et on attend 10 secondes.

En revanche, si nous voulons que la fréquence du son soit changeante:

int ton = 500; //Note initiale. C'est la période de l'onde
void setup (){
  pinMode (8, OUTPUT);
  for (ton=10000; ton>=100; ton=ton-10){
    digitalWrite (8, HIGH);
    delayMicroseconds (ton/2);
    digitalWrite (8, LOW);
    delayMicroseconds (ton/2);
  }
}
void loop (){}

Son contrôlé grâce à un potentiomètre.

il est nécessaire:

  • Arduino Uno ou équivalent.
  • Breadboard.
  • Buzzer.
  • Potentiomètre.
  • Fils.
  • Résistance de 220 Ohms.

Schéma du montage avec un potentiomètre:

Montage du buzzer avec un potentiomètre sur la plaque d'Arduino.
Montage du buzzer avec un potentiomètre

Pour le montage du potentiomètre on relie la broche VCC à la sortie de 5 V, la broche Out à la sortie analogique A0, et la broche GND à la masse.

Code:

int ton = 1000; //Note initiale. C'est la période de l'onde
void setup (){
  pinMode (8, OUTPUT);
  pinMode (A0, INPUT);
}
void loop (){
  digitalWrite (8, HIGH);
  delayMicroseconds (ton/2);
  digitalWrite (8, LOW);
  delayMicroseconds (ton/2);
  ton=analogRead(A0);
  ton=map(ton,0,1023,1000,5000);
}

Dans ce code on insère la variable ton qu’on utilise pour le potentiomètre et qui correspond à la lecture du pin analogique A0.

Sirène d’urgence.

Arduino offre deux fonctions spécialement pensées pour générer de sons à une fréquence déterminée, et qui vont nous simplifier l’écriture des codes. Ce sont les fonctions tone() et noTone().

Il est nécessaire:

  • Arduino Uno ou équivalent.
  • Breadboard.
  • Buzzer.
  • Fils.
  • Résistance de 220 Ohms.

Schéma:

Montage pour créer une sirène d'urgence avec Arduino.
Montage pour créer une sirène d’urgence avec Arduino

Code:

int duree = 250; //Durée du son
int freqmin = 2000; //La fréquence plus basse à émettre
int freqmax = 4000; //La fréquence plus haute à émettre
void setup(){
  pinMode(9, OUTPUT);
}
void loop(){
  int i;
  //le son devient plus aigu 
  for (i = freqmin; i<=freqmax; i++){
    tone (9, i, duree);
  }
  //le son devient plus grave
  for (i = freqmax; i>=freqmin; i--){
    tone (9, i, duree);
  }
}

Bonus

Avec ce même schéma il est aussi possible de reproduire une mélodie. Pour y arriver le code émet, une après l’autre, et durant le temps précis, les fréquences exactes correspondantes aux notes musicales.

//Fréquences des notes de la mélodie
int melodie[] = {262, 196, 196, 220, 196, 247, 262};
/*Durée des notes (4 = dure un quart du temps, 8=dure un octave, etc.)*/
int dureeNote[] = {4,8,8,4,4,4,4,4 };
void setup() {
  int i;
  //on répete les 7 notes de la mélodie une après l'autre
  for (i = 0; i < 8; i++){
  /*Pour calculer la durée de la note, on divise une seconde par la
  quantité signalée dans dureeNote[]. Exemple, un quart du temps
  est 1000/4 secondes, un octave est 1000/8 secondes, etc. */
  tone(9, melodie[i], 1000/dureeNote[i]);
  /*Comme la fonction tone() ne bloque pas, el sketch continue à s'exécuter
 sans arrêt. Pour  éviter de revenir au début de la boucle for et pour pouvoir différencier les notes, j'établis un temps minimal
  entre elles*/
  delay(1300/dureeNote[i]);
  // on arrête l'émission des sons
  noTone(9);
  }
}
void loop(){}

Articles similaires
Laisser un commentaire