Tutorial Arduino – Buzzer
Ide Dasar
Setelah dengan tutorial sebelumnya kita sudah mencoba mengatur LED dan servo, kali ini kita coba untuk mengontrol suara. Suara adalah fenomena analog, bagaimana caranya Arduino menanganinya? Sekali lagi kita akan meniru perilaku analog menggunakan Arduino dengan kecepatannya yang luar biasa. Untuk ini kita akan menghubungkan buzzer/piezo elements ke salah satu pin digital Arduino. Sebuah buzzer akan menghasilkan suara ketukan setiap kali dialiri gelombang (pulse) arus listrik. Jika kita menggunakan gelombang arus listrik dengan frekuensi yang tepat (misalnya 440 kali per detik untuk menghasilkan nada A) maka suara ketukan secara bersama-sama ini akan menghasil nada musik. Mari kita coba bereksperimen dan mebuat Arduino menyanyikan lagu “Twinkle Twinkle Little Star”.
Catatan: Ide tutorial dan kode yang digunakan didapat dari link berikut: http://ardx.org/CODE06.
Rangkaian
Komponen yang diperlukan:
- 1 buah buzzer
- Kabel jumper
Skema rangkaian dapat dilihat pada gambar berikut:
Berikut ini adalah gambar simulasi penempatan komponen pada breadboard dan board Arduino. Gambar simulasi ini menggunakan software Fritzing yang bisa didapat di sini.
Pada saat menempatkan buzzer, perhatikan polaritas-nya (tanda +) jangan terbalik. Kaki dengan tanda + dihubungkan dengan pin 9 Arduino.
Kode Pemrograman
Di bawah ini adalah kode pemrograman yang digunakan untuk Buzzer.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 /* Melody
* (cleft) 2005 D. Cuartielles for K3
*
* This example uses a piezo speaker to play melodies. It sends
* a square wave of the appropriate frequency to the piezo, generating
* the corresponding tone.
*
* The calculation of the tones is made following the mathematical
* operation:
*
* timeHigh = period / 2 = 1 / (2 * toneFrequency)
*
* where the different tones are described as in the table:
*
* note frequency period timeHigh
* c 261 Hz 3830 1915
* d 294 Hz 3400 1700
* e 329 Hz 3038 1519
* f 349 Hz 2864 1432
* g 392 Hz 2550 1275
* a 440 Hz 2272 1136
* b 493 Hz 2028 1014
* C 523 Hz 1912 956
*
* http://www.arduino.cc/en/Tutorial/Melody
*/
int speakerPin = 9;
int length = 15; // the number of notes
char notes[] = "ccggaagffeeddc "; // a space represents a rest
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;
void playTone(int tone, int duration) {
for (long i = 0; i < duration * 1000L; i += tone * 2) {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone);
digitalWrite(speakerPin, LOW);
delayMicroseconds(tone);
}
}
void playNote(char note, int duration) {
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
// play the tone corresponding to the note name
for (int i = 0; i < 8; i++) {
if (names[i] == note) {
playTone(tones[i], duration);
}
}
}
void setup() {
pinMode(speakerPin, OUTPUT);
}
void loop() {
for (int i = 0; i < length; i++) {
if (notes[i] == ' ') {
delay(beats[i] * tempo); // rest
} else {
playNote(notes[i], beats[i] * tempo);
}
// pause between notes
delay(tempo / 2);
}
}
Melakukan Perubahan
- Bermain dengan tempo
Waktu pada tiap nada didasarkan pada beberapa variabel, sehingga kita dapat merubah suara tiap nada atau tempo-nya. Untuk merubah tempo nada kita dapat merubah satu baris. int tempo = 300; —> int tempo = angka baru; Merubah angka baru dengan nilai yang lebih besar akan melambatkan tempo atau dengan nilai lebih kecil untuk mempercepatnya.
- Menyesuaikan nada
Kalau anda rasa nadanya masih kurang tepat, hal ini dapat diperbaiki. Nada yang dipergunakan pada program ini telah diperhitungkan sesuai dengan catatan pada bagian atas kode pemrograman tadi. Untuk menyesuaikan nada, sesuaikan nilai pada array tones [] ke atas atau ke bawah sampai nadanya dirasa sudah sesuai. Tiap nada dicocokkan dengan nama yang terdapat pada array names [], misalnya c = 1915.
char names[] = { ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘a’, ‘b’, ‘C’ };
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
- Membuat melodi sendiri
Kode program di atas diset untuk memainkan lagu “Twinkle Twinkle Little Star”, namun dengan cara pemrograman yang telah dibuat dimungkinkan untuk merubah lagu dengan cukup mudah. Tiap lagu didefinisikan dengan sebuah int dan dua array, int length menentukan jumlah nada, array pertama notes [] mendefinisikan nada, dan yang kedua beats [] menentukan berapa lama nada itu dimainkan.
Seperti contoh ini:
Twinkle Twinkle Little Star
int length = 15;
char notes [] = {“ccggaagffeeddc “};
int beats [] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
Happy Birthday (baris pertama)
int length = 13;
char notes [] = {“ccdcfeccdcgf “};
int beats [] = { 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 4 };
Silahkan mencoba membuat lagu yang lain!
bagaimana kalau kontrol kecepatan dan pilihan lagunya(lagu >1) dengan serial moinitor pada arduino…?
wahhh ijin coba nih mas, seruuu main arduino, masuk surga mas, bagus postingannya
numpang tanya mas kalo via wifi dr androit gimana mas??