Utiliser un buzzer passif avec Arduino
Vidéo tuto
Bonjour et bienvenu dans ce tuto où on voit comment utiliser un buzzer passif avec la carte Arduino UNO, les buzzers sont utilisés parfois dans les projets, si on veut avoir un signal sonore, par exemple lors de la supervision d’un capteur, on émet un signal d’alarme lors de dépassement de certaines valeurs, ou bien dans un système de sécurité…
Il y a deux types de buzzers: actif et passif, ceux actifs nécessite une tension continue pour émettre un bip, pour le passif on requiert un signal alternatif, celui qu’on va utiliser est un passif, c’est un buzzer très populaire, n’ayez pas peur du signal alternatif, il y a une fonction Arduino qui va s’en occuper.
Il y a une version normale du buzzer qui contient seulement le composant qui a 2 broches mais on doit ajouter une résistance en série, il y a celle en format module avec 3 broches qui contient déjà la résistance, et il y a une version qui s’active sur état “BAS”.


Schémas de câblage
Schéma 1: Version à deux broches
On peut ajouter une résistance de 100Ω (plus grande si on veut atténuer le son), il faut faire attention à respecter la polarité du composant, il y a souvent un (+) côté broche positive qu’on branche avec la broche d’Arduino.

Schéma 2: Remplacer la résistance par un potentiomètre
On peut remplacer la résistance de 100Ω par un potentiomètre, j’ai choisi 1kΩ, utilisé en série comme résistance variable et on varie selon le volume sonore désiré.

Schéma 3: Utilisation de la version module

Librairies
On aura pas besoin de librairie pour utiliser le buzzer.
Codes
Vous pouvez copier les codes ci-dessous ou bien les télécharger ici.
Il y a deux fonctions importantes pour utiliser ce composant:
|
1 |
tone(pin, frequency) |
|
1 |
tone(pin, frequency, duration) |
La fonction “tone” qui a deux versions: elle sert à activer le buzzer, “pin”: la broche du buzzer, “frequency”: la fréquence, on teste plusieurs fréquences pour voir celles qui nous conviennent, dans une alarme on altère entre plusieurs fréquences, la deuxième version de la fonction a une variable supplémentaire qui est “duration”: durée de l’activation du buzzer.
La version qui a “duration” ne bloque pas le code, on utilise si on a besoin au lieu d’avoir “Tone” + “Delay”
L’autre fonction importante est celle de l’arrêt du son:
|
1 |
noTone(pin) |
Code 1: Test qui alterne deux fréquences + arrêt chaque seconde
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/* Ceci est un code à utiliser avec un buzzer * On émet un son de 1khz pour 1s puis 2khz pour 1s * Veuillez visiter https://surtrtech.com/ pour plus d'info */ #define buzzer 8 //Broche du buzzer void setup() { pinMode(buzzer,OUTPUT); //Mode de la broche (sortie) } void loop() { tone(buzzer, 1000); //Activer le buzzer (broche pré-définie) avec une fréquence de 1000 delay(1000); //Délai de 1s et puis changer de fréquence tone(buzzer, 2000); delay(1000); noTone(buzzer); delay(2000); } |
Code 2: Emettre un son en balayant une plage de fréquence
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/* Ceci est un code à utiliser avec un buzzer * On émet un son avec une fréquence variable, en balayant de 100Hz à 2kHz vous pouvez changer * Veuiller visiter https://surtrtech.com/ pour plus d'info */ #define buzzer 8 //Broche du buzzer void setup() { pinMode(buzzer,OUTPUT); //Mode de la broche (sortie) } void loop() { for(int i=100 ; i<2000 ; i++){ //Boucle pour incrémenter la fréquence tone(buzzer, i); delay(10); //délai de 10ms vous pouvez changer } for(int i=2000 ; i>100 ; i--){ //Boucle pour décrémenter la fréquence tone(buzzer, i); delay(10); } } |
Code 3: Pour créer le thème de Star Wars (Source: https://gist.github.com/nicksort/4736535)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
const int c = 261; const int d = 294; const int e = 329; const int f = 349; const int g = 391; const int gS = 415; const int a = 440; const int aS = 455; const int b = 466; const int cH = 523; const int cSH = 554; const int dH = 587; const int dSH = 622; const int eH = 659; const int fH = 698; const int fSH = 740; const int gH = 784; const int gSH = 830; const int aH = 880; const int buzzerPin = 8; const int ledPin1 = 12; const int ledPin2 = 13; int counter = 0; void setup() { //Setup pin modes pinMode(buzzerPin, OUTPUT); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); } void loop() { //Play first section firstSection(); //Play second section secondSection(); //Variant 1 beep(f, 250); beep(gS, 500); beep(f, 350); beep(a, 125); beep(cH, 500); beep(a, 375); beep(cH, 125); beep(eH, 650); delay(500); //Repeat second section secondSection(); //Variant 2 beep(f, 250); beep(gS, 500); beep(f, 375); beep(cH, 125); beep(a, 500); beep(f, 375); beep(cH, 125); beep(a, 650); delay(650); } void beep(int note, int duration) { //Play tone on buzzerPin tone(buzzerPin, note, duration); //Play different LED depending on value of 'counter' if(counter % 2 == 0) { digitalWrite(ledPin1, HIGH); delay(duration); digitalWrite(ledPin1, LOW); }else { digitalWrite(ledPin2, HIGH); delay(duration); digitalWrite(ledPin2, LOW); } //Stop tone on buzzerPin noTone(buzzerPin); delay(50); //Increment counter counter++; } void firstSection() { beep(a, 500); beep(a, 500); beep(a, 500); beep(f, 350); beep(cH, 150); beep(a, 500); beep(f, 350); beep(cH, 150); beep(a, 650); delay(500); beep(eH, 500); beep(eH, 500); beep(eH, 500); beep(fH, 350); beep(cH, 150); beep(gS, 500); beep(f, 350); beep(cH, 150); beep(a, 650); delay(500); } void secondSection() { beep(aH, 500); beep(a, 300); beep(a, 150); beep(aH, 500); beep(gSH, 325); beep(gH, 175); beep(fSH, 125); beep(fH, 125); beep(fSH, 250); delay(325); beep(aS, 250); beep(dSH, 500); beep(dH, 325); beep(cSH, 175); beep(cH, 125); beep(b, 125); beep(cH, 250); delay(350); } |
Categories
Yassine View All
Automation and Electrical Engineer, Electronics amateur trying to share my little projects.


2 thoughts on “Utiliser un buzzer passif avec Arduino” Leave a comment ›