Membunyikan Buzzer
Buzzer merupakan komponen elektronik yang dapat menghasilkan bunyi, terdapat dua jenis buzzer yaitu buzzer aktif dan buzzer pasif. Buzzer jenis actif dapat memproduksi suara/getaran sendiri, kita cukup menghubungkannya dengan tegangan 5V dan buzzer tersebut mengeluarkan suara. Sedangkan buzzer pasif tidak dapat menghasilkan suara sendiri, kita harus memberikannya tegangan berbentuk gelombang dan mempunyai frekuensi maka buzzer pasif akan mengeluarkan suara. Speaker adalah salah satu contoh dari jenis buzzer aktif.Pada latihan sekarng menggunakan buzzer jenis pasif untuk memainkan nada-nada sederhana.
Kebutuhan Komponen:
— 1 x Arduino UNO— 1 x Buzzer
Komponen yang digunakan pada Shield:
1 x Buzzer yang dihubungkan ke pin A3.Rangkaian:
Upload sketch:
Buka software Arduino IDE apabila menggunakan PC/Laptop. Jika menggunakan Android dapat membuka aplikasi Bluino Loader yang sudah diinstal dari Google Playstore. Buka sketch Latihan 08 yang sudah diunduh dan disimpan pada folder Examples sebelumnya.Untuk membuka sketch temukan file di: BluinoLoader > examples > Belajar_Arduino_Dasar > Latihan_08
Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) dibawah.
/* Bluino Starter Shield
Latihan 08 Membunyikan Buzzer
This sketch uses the buzzer to play songs.
The Arduino's tone() command will play notes of a given frequency.
Version 1.0 9/2017 MK
*/
const int buzzerPin = A3; // connect the buzzer to pin A3
const int songLength = 18; // sets the number of notes of the song
// Notes is an array of text characters corresponding to the notes
// in your song. A space represents a rest (no tone)
char notes[songLength] = {
'c', 'd', 'f', 'd', 'a', ' ', 'a', 'g', ' ', 'c', 'd', 'f', 'd', 'g', ' ', 'g', 'f', ' '};
// beats[] is an array of values for each note. A "1" represents a quarter-note,
// "2" a half-note, and "4" a quarter-note.
// Don't forget that the rests (spaces) need a length as well.
int beats[songLength] = {
1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 1, 1, 1, 1, 1, 4, 4, 2};
int tempo = 113; // The tempo is how fast to play the song (beats per second).
void setup() {
pinMode(buzzerPin, OUTPUT); // sets the buzzer pin as an OUTPUT
}
void loop() {
int i, duration; //
for (i = 0; i < songLength; i++) { // for loop is used to index through the arrays
duration = beats[i] * tempo; // length of note/rest in ms
if (notes[i] == ' ') // is this a rest?
delay(duration); // then pause for a moment
else { // otherwise, play the note
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration); // wait for tone to finish
}
delay(tempo/10); // brief pause between notes
}
}
int frequency(char note) {
int i;
const int numNotes = 8; // number of notes we're storing
char names[numNotes] = {
'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[numNotes] = {
262, 294, 330, 349, 392, 440, 494, 523 };
// Now we'll search through the letters in the array, and if
// we find it, we'll return the frequency for that note.
for (i = 0; i < numNotes; i++) { // Step through the notes
if (names[i] == note) { // Is this the one?
return(frequencies[i]); // Yes! Return the frequency and exit function.
}
}
return(0); // We looked through everything and didn't find it,
// but we still need to return a value, so return 0.
}
Catatan kode:
char notes[] = "cdfda ag cdfdg gf ";
char names[] = {'c','d','e','f','g','a','b','C'};
Sampai saat ini kita banyak berlatih dengan data numerik, tapi Arduino juga dapat mengolah data text. Satu huruf dari sebuah text disebut "char" (cahracter). Ketika text atau gabungan dari banyak character dituliskan dalam kode Arduino dapat dituliskan menggunakan tanda kutip dua (juga disebut "string").tone(pin, frequency, duration);
Banyak fungsi-fungsi bawaan bahasa arduino yang sangat berguna salah satunya fungsi untuk mengendalikan buzzer adalah fungsi tone()
. Fungsi ini akan mengelhasilkan frekuensi tertentu pada pin output, memjadikan fungsi ini sangat berguna untuk membunyikan sebuah buzzer atau speaker. Jika kamu memberi nilai untuk durasi (dalm milidetik), maka nada akan berbunyi dan kemudian berhenti. Jika tidak diberikan nilai durasi maka nada akan berbunyi terus menerus, namun kamu masih dapat menghentikannya menggunkan fungsi noTone()
.