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.
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.
Š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.
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); }