Pada latihan ini kita akan menggunakan Arduino untuk menyalakan buzzer kecil dan bisa kita gunakan untuk memainkan musik. Kita akan belajar bagaimana cara membuat program untuk musik kita sendiri menggunakan variabel array.
Buzzer merupakan speaker berukuran sangat kecil yang di dalamnya menggunakan sebuah lilitan magnet untuk mengetarkan piringan besi dibungkus dengan housing plastik. Dengan cara memberikan tegangan berupa pulsa listrik pada lilitan magnet dengan frekuensi yang berbeda-beda, maka akan menghasilkan suara dari buzzer tersebut.
Kebutuhan Komponen :
- Arduino Uno : 1 Pcs
- Breadboard : 1 Pcs
- Buzzer : 1 Pcs
- Kabel Jumper secukupnya
Skema
Dengan komponen hanya 3 jenis dan beberapa buah kabel jumper, kita bisa membunyikan nada musik. Sangat sederhana, namun mengasyikkan. Hehehe.
Rangkaian
Source Code
/*
Buzzer
Memainkan nada menggunakan sebuah buzzer yang terhubung ke pin 8
*/
int speakerPin = 8; //pin dimana buzzer dihubungkan
void setup() {
pinMode(speakerPin, OUTPUT); //set pin digital sebagai output untuk speaker
}
void loop() {
play('g', 2); //ha
play('g', 1); //ppy
play('a', 4); //birth
play('g', 4); //day
play('C', 4); //to
play('b', 4); //you
play(' ', 2); //jeda 2 beats
play('g', 2); //ha
play('g', 1); //ppy
play('a', 4); //birth
play('g', 4); //day
play('D', 4); //to
play('C', 4); //you
play(' ', 2); //jeda 2 beats
play('g', 2); //ha
play('g', 1); //ppy
play('G', 4); //birth
play('E', 4); //day
play('C', 4); //dear
play('b', 4); //your
play('a', 6); //name
play(' ', 2); //jeda 2 beats
play('F', 2); //ha
play('F', 1); //ppy
play('E', 4); //birth
play('C', 4); //day
play('D', 4); //to
play('C', 6); //you
while(true){} //membuaat program stack disini sehingga musik hanya dimainkan sekali
}
void play( char note, int beats) {
int numNotes = 14; //jumlah nada didalam array notes dan frekuensi (ada 15 nilai, tapi sebuah array dimulai dari 0 - 14)
//Catatan: nada-nada yang digunakan adalah C major
//array notes ini digunakan untuk menyimpan kumpulan nada-nada
char notes[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C', 'D', 'E', 'F', 'G', 'A', 'B', ' '};
//array frequencies dibawah berpasangan dengan tiap huruf (contoh urutan nada ke 4 adalah 'f', urutan frekuensi ke 4 adalah 175)
int frequencies[] = {131, 147, 165, 175, 196, 220, 247, 262, 294, 330, 349, 392, 440, 494, 0};
int currentFrequency = 0; //variabel ini digunakan untuk menyimpan frekuensi yang sedang dimainkan
int beatLength = 150; //waktu ketukan (merubah nilai ini akan mempercepat atau memperlambat tempo tempo dari lagu)
//mencari frekuensi yang berpasangan sesuai dengan nada
for (int i = 0; i < numNotes; i++) //cek setiap nilai didalam array notes dari 0 sampai 14
{
if (notes[i] == note) //memeriksa apakah huruf yang akan dimainkan ada yang cocok dengan huruf/nada yang berada didalam array notes?
{
currentFrequency = frequencies[i]; //jika Ya! Set nilai currentFrequency sama dengan frekuensi yang sepasang dengan huruf/nada
}
}
//memainkan frequency yang sepasang dengan huruf/nada dengan ketukan yang sesuai dengan nilai variabel beats pada pemanggilan fungsi play
tone(speakerPin, currentFrequency, beats * beatLength);
delay(beats* beatLength); //jeda sesuai dengan lama ketukan nada yang dimainkan
delay(50); //sedikit jeda antara tiap nada untuk membuat lagu menjadi lebih natural
}
Kesimpulan
Setelah semua komponen kita rangkai dengan benar, marilah kita mulai menghidupkan Arduinonya. Ketika pertama kali program mulai berjalan, sebuah nada musik akan menyala oleh buzzer. Untuk mengulangi musik kita perlu menekan tombol reset pada board Arduino. Namun apabila ingin membuat nada musiknya berulang secara terus menerus, hapus baris program ini,
while(true){}
maka nada musik akan menyala secara terus menerus.