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:

Skema rangkaian untuk Buzzer dan Arduino

Berikut ini adalah gambar simulasi penempatan komponen pada breadboard dan board Arduino. Gambar simulasi ini menggunakan software Fritzing yang bisa didapat di sini.

Buzzer using Arduino

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!

You may also like...

3 Responses

  1. faiz_tech says:

    bagaimana kalau kontrol kecepatan dan pilihan lagunya(lagu >1) dengan serial moinitor pada arduino…?

  2. brohh says:

    wahhh ijin coba nih mas, seruuu main arduino, masuk surga mas, bagus postingannya

  3. andre says:

    numpang tanya mas kalo via wifi dr androit gimana mas??

Leave a Reply

Your email address will not be published. Required fields are marked *

Facebook