Buzzer

Uvod

Buzzer ili beeper je zvučno-signalizacijski uređaj. Može biti mehanički, elektromehanički ili piezoelektrični. Primjer mehaničkog je "joy buzzer" koji se koristi na starim budilicama, elektromehanički je onaj povezan na zvono vaših ulaznih vrata, a s piezo buzzerima ćemo se pozabaviti u ovom tutorialu.

DSC_8597

Piezo efekt

Piezo efekt je sposobnost materijala da generira električni naboj na dano mehaničko opterećenje. Ime potječe od grčke riječi piezo što znači pritisnuti, a otkirili su ga braća Pierre i Jacques Currie. Kada se piezoelektrični materijal izloži mehaničkom opterećenju (pritisak) događa se premještanje pozitivnog i negativnog naboja, što rezultira vanjskim električnim poljem. Odličan piezoelektrični materijal je quartz, koji pokreće quartz satove. Osim navedenih satova, novija primjena ove tehnologije je prepoznavanje govora. Pa tako mikrofon u koji govorite kada želite da računalo zapisuje vaš govor koristi piezo efekt kako bi energiju glasa pretvorio u električni signal kojeg računalo može obraditi.

ezgif.com-gif-maker
Što se tiće buzzera, u njemu se nalazi mala zavojnica i magnet. Kada struja poteče kroz zavojnicu, ona se magnetizira i povlaći prema magnetu. Iz predhodno objašnjenog piezo efekta, jasno nam je da će to izazvati mali "klik". Kako se to ponavlja nekoliko tisuća puta u sekunda, "klik" postaje zvuk.

Kako spojiti buzzer?

Pazeći na polaritet, spojiti ćemo negativni pol buzzera na gnd Croduina, te pozitivni na digitalni pin 9 Croduina. Možete spojiti jedan pol preko nekog otpornika, primjerice 100Ω. Napomena: buzzer mora biti spojen na PWM pin, ukoliko ne želite jednoliki zvuk. Ne zaboravite skinuti naljepnicu s buzzera.

buzz

 

Kod i Tone library

Tone library se nalazi u Arduino IDE i ne trebamo ga posebno instalirati. Koristi funkciju tone() na nekom od PWM pinova.
Sintaksa je sljedeća:
tone(pin, frekvencija);
tone(pin, frekvencija, trajanje);

gdje je:
pin - broj PWM pina
frekvencija - frekvencija tona u Hz (pogledaj frekvencije)
trajanje - duljina tona u milisekundima (nije nužno)

Primjer možete preuzeti ovdje. Kod reproducira pjesmu Hladnog Piva - Nije sve tako sivo. Šaljite nam Vaše, ako napravite nešto.

/*
Ovaj kod svira pjesmu Hladnog Piva - Nije sve tako sivo
tonovi koji su koristeni:
ton frekvencija
a 220 Hz
(a)# 233 Hz
c 262 Hz
d 294 Hz
f 349 Hz
A 440 Hz
Vise informacija na http://peabody.sapp.org/class/st2/lab/notehz/
Written by e-radionica.com
*/
const int buzzerPin = 9;
const int duljinaPjesme = 32; // mora biti koliko ima nota i pauza
char nota[] = "ddfd fda##d# d#affAf Afdaaa# #cc"; // razmak predstavlja pauzu
// ritam je array vrijednosti svake nota i pauze
// "1" predstavlja cetvrtinku, 2 polovinku i td.
int ritam[] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
// tepo je brzina izvođenja pjesme, smanjite tempo da ubrzate pjesmu
int tempo = 80;
void setup()
{
pinMode(buzzerPin, OUTPUT);
}
void loop()
{
int i, trajanje;
for (i = 0; i < duljinaPjesme; i++) // koraci kroz array pjesme
{
trajanje = ritam[i] * tempo;
if (nota[i] == ' ')
{
delay(trajanje);
}
else
{
tone(buzzerPin, frekvencija(nota[i]), trajanje); // za vise pogledajte http://e-radionica.hr/blog/?p=513
delay(trajanje);
}
delay(tempo/10);
}
while(1){} // ako zelite da neprestano svira ovo melodiju, stavite komentare (//) ispred funkcije while
}
int frekvencija(char nota)
{
int i;
const int brojnota = 6; // koliko nota spremamo
// sljedecim arrayima zadajemo imena i frekvencije notama koje zelimo koristiti
char ime[] = { 'c', 'd', 'f', 'a', '#', 'A' };
int vratiFrekvenciju[] = {262, 294, 349, 220, 233, 440};
// prolazimo kroz array i trazimo ton, odnosno njegovu frekvenciju
for (i = 0; i < brojnota; i++)
{
if (ime[i] == nota) // ako je to ton koji trazimo
{
return(vratiFrekvenciju[i]); // vrati njegovu frekvenciju
}
}
return(0);
}
Leave a Reply