Un buzzer és una mena de petit altaveu capaç d'emetre sons. Es tracta d'un sensor molt senzill de connectar però que es pot fer servir tant per emetre un "beep" com per fer sonar notes.
Connexió del brunzidor
La connexió és extremadament senzilla. Un buzzer bàsic només té dues potes, una que va directament al GND i l'altre que va al pin que es vulgui (millor si es connecta a un pin amb sortida analògica com el #9 ja que sinó no podrem enviar notes diferents).
Si teniu una versió amb placa, només cal connectar el pin S i el - (GND) ja que el +5V no es fa servir.
Emetre un beep amb un brunzidor
El següent exemple l'he tret d'
aquesta web i explica com fer sonar un "beep" bàsic amb un buzzer.
int buzzer = 9;
void setup() {
// declare pin 9 to be an output:
pinMode(buzzer , OUTPUT);
}
void loop() {
beep(200);
}
void beep(unsigned char delayms){
analogWrite(buzzer,20);
//el 20 es arbritari, es el to que emetra
delay(delayms);//temps que sonara
analogWrite(buzzer,0);//apagar el buzzer
delay(delayms);//esperar uns instants
}
Emetre notes amb un brunzidor
Per emetre notes amb un buzzer podem seguir
el tutorial de la pàgina d'Arduino que, encara que explica com fer-ho amb un altaveu (la connexió és diferent) el codi és el mateix que per un buzzer.
Per fer-ho, el primer que cal fer és crear un arxiu amb els codis de les notes. Per fer-ho cal fer clic a la icona de triangle que hi ha al costat del nom de l'arxiu, seleccionar l'opció de nova pestanya i escriure "pitches.h". En aquest arxiu copiarem
les definicions que podeu trobar aquí.
Com crear una nova pestanya a l'entorn d'Arduino
Un cop fet això, el codi fa servir les funcions:
- tone (pin, freqüència, duració): que emet una nota. Si no es passa duració sonarà fins que es cridi notone.
- notune (pin): que atura el buzzer
El codi d'exemple seria tal que així
/*
llibreria estandard on hi ha les notes
*/
#include "pitches.h"
int buzzer = 9;
//les notes
int melody[] = {
NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};
//la duracio
int noteDurations[] = {
4, 8, 8, 4,4,4,4,4 };
void setup() {
}
void loop() {
for (int thisNote = 0; thisNote < 8; thisNote++) {
// la duracio va amb milisegons
int noteDuration = 1000/noteDurations[thisNote];
tone(buzzer, melody[thisNote],noteDuration);
// temps de pausa entre notes
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// para el buzzer
noTone(buzzer);
delay(2000);
}
}