Différence entre le buzzer Actif et Passif ? Comment faire sa propre musique ?

Introduction

Le buzzer est composé d’une lame qui bouge avec l’effet piézoélectrique.

La piézoélectrique est la propriété que possède certains minéraux de se déformer quand ils sont soumis à un champ électrique. Il permet de transformer l’énergie électrique en vibration. Il permet de jouer des notes et des mélodies simples.

Les buzzers peuvent être trouvés dans des dispositifs d’alarme, les ordinateurs, les minuteries…

Le buzzer ce décline en deux formats : Le buzzer passif et actif.

Quelle est la différence entre le buzzer actif et passif ?

Il existe quelques différences fondamental entre le buzzer actif et passif :

Buzzer Actif : Il peut générer un son quand il reçoit une tension continu

Buzzer Passif : Fonctionne comme un haut parleur, donc il faut fournir le signal audio à diffuse.

Pour différencier les deux, vous pouvez appliquer une tension continue au deux buzzers. Celui qui va émettre du son serra le buzzer actif.

Néanmoins les deux buzzers ont presque le même fonctionnement, c’est pour ça que les programmes que l’on va vous proposer sera les mêmes pour les deux buzzers.

Symbole électronique du Buzzer

Le symbole électronique du Buzzer est composé de deux cercles avec un plus :

Librairie

Pour pouvoir faire fonctionner le programme, vous avez besoin d’installer la librairie dédié au buzzer. Cette librairie contient toute les notes jouable par le buzzer. La  librairie du buzzer est en .zip, donc pour l’installer il faut cliquer sur “Sketch”, puis “Include Library” et “Add .Zip Library”  :

Si vous avez des problèmes pour installer la librairie, on vous conseille notre cours dédié.

Comment se passer de librairie ?

Il existe d’autres types de notes possible que vous pouvez jouer. Vous pouvez pour cela utiliser la librairie et taper la référence de la note comme dans la liste mélodie du programme, ou bien taper directement la fréquence.

En tapant directement la fréquence, vous n’avez plus besoin d’ajouter la librairie à votre code.

Voici une liste des correspondances entre la fréquence et la note.

Programmation du buzzer

Comme on vient de voir, on peut programmer le buzzer avec la librairie et sans celle-ci .

A) Code avec la librairie

Voici la fonction pour programmer votre buzzer avec la librairie :

tone(broche, laNote,Duree);

Broche : La broche ou est branché votre buzzer

laNote : La note en fréquence hz

Durée : La durée que vous voulez que la note se joue

Vous trouverez un exemple d’utilisation de la fonction dans les programmes en dessous.

B) Code sans librairie

Voici la fonction pour programmer votre buzzer sans la librairie :

digitalWrite(Broche_buzzer,HIGH);

Broche Buzzer : Le numéro de la broche ou vous avez branché le buzzer

HIGH/LOW : Permet d’allumer le buzzer

Vous trouverez un exemple d’utilisation de la fonction dans les programmes en dessous.

Schéma des buzzers

On va maintenant voir le circuit que vous devez faire pour utiliser les programmes. Tous les codes fonctionnent avec ces circuits.

A) Buzzer Passif

Voici le schéma du buzzer passif :

B) Buzzer Actif

Voici le schéma du buzzer actif :

Pour pouvoir reproduire le schéma du buzzer actif sur Fritzing, vous avez besoin d’installer le composant buzzer actif. On vous conseille notre cours sur Fritzing si vous avez du mal à installer le composant.

Code pour le buzzer

On va vous présenter deux codes pour faire fonctionner votre buzzer. Le premier fonctionne avec la librairie, et le second sans celle-ci.

Ici vous avez une suite de note de grave vers aigu avec la librairie :

#include "pitches.h" // La librairie pour le buzzer passif
 
// notes de la melodie
int melodie[] = {NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6}; // Voici des notes déjà incluses dans la librairie
int duree = 500;  // durée de chaque melodie 
 
void setup() {
}
 
void loop() {  
  for (int thisNote = 0; thisNote < 8; thisNote++) { // Pour toute les notes de la liste melodie
    tone(13, melodie[thisNote], duree); // On joue la note avec la duree choisit
    delay(1000); // Nouveau son après 1 seconde de pause
  }
  delay(2000);
}

Ici vous avez une alarme sans librairie :

int buzzer = 13;//La broche du buzzer actif
void setup()
{
 pinMode(buzzer,OUTPUT);//On initialize la broche du buzzer en sortie
}
void loop()
{
 unsigned char i; // compteur de boucle
 while(1) // Boucle infini
 {
   //Premiere fréquence
   for(i=0;i<80;i++)
   {
    digitalWrite(buzzer,HIGH); // Buzzer emet du son
    delay(1);//pause d'une milli seconde
    digitalWrite(buzzer,LOW); // buzzer éteint
    delay(1);//pause d'une milli seconde
    }
    //Deuxième fréquence
     for(i=0;i<100;i++)
      {
        digitalWrite(buzzer,HIGH); // buzzer emet du son
        delay(2);//pause de deux milli seconde
        digitalWrite(buzzer,LOW); // buzzer éteint
        delay(2);//pause de deux milli seconde
      }
  }
} 

Comment jouer votre propre musique ?

Comme on a pu voir, on peut faire jouer plusieurs notes à notre buzzer. Mais encore faut-il trouver une bonne mélodie.  Pour cela on vous conseille de traduire les notes d’une partition que vous avez choisit en fréquence Hz.

Pour l’exemple, on vous a traduit la chanson Jingle Bells :

#define Buzzer_broche 13

// Jingle Bells

int melodie[] = {
  659, 659, 659,
  659, 659, 659,
  659, 784, 523, 587,
  659,
  698, 698, 698, 698,
  698, 659, 659, 659, 659,
  659, 587, 587, 659,
  587, 784
};

int tempo[] = {
  8, 8, 4,
  8, 8, 4,
  8, 8, 8, 8,
  2,
  8, 8, 8, 8,
  8, 8, 8, 16, 16,
  8, 8, 8, 8,
  4, 4
};

void setup(void) {
  pinMode(13, OUTPUT); // Buzzer
}

void loop() {
 chanson();
}
int song = 0;
void chanson() {
    int size = sizeof(melodie) / sizeof(int);
    for (int la_Note = 0; la_Note < size; la_Note++) {
      int duree_note = 1000 / tempo[la_Note]; // Pour calculer la durée de la note, on prends une seconde divisé par le type de note

      buzz(Buzzer_broche, melodie[la_Note], duree_note); // On appelle la fonction buzz
      delay(duree_note * 1.30); // On fait une pause entre les notes.
      buzz(Buzzer_broche, 0, duree_note); // On arrete de jouer la note

    
  }
}

void buzz(int pin_buzzer, long frequence, long length) {
  long temps_attente = 1000000 / frequence / 2; // On calcul la valeur entre chaque transition
  long numCycles = frequence * length / 1000; // On calcul le nombre de cycle
  for (long i = 0; i < numCycles; i++) { //On fait une boucle pour joeur toute les notes
    digitalWrite(pin_buzzer, HIGH); // On joue la note
    delayMicroseconds(temps_attente); // On attend le temps calculé pour avoir la bonne note
    digitalWrite(pin_buzzer, LOW); // On arrête de jouer la note
    delayMicroseconds(temps_attente); // On attend le temps calculé pour avoir la bonne note
  }
}