#15Menengah

Lagu Kebangsaan Turki dengan Buzzer

4.9(106)
213 selesai
Lagu Kebangsaan Turki dengan Buzzer
Tekan tombol dan buzzer kecil mulai memainkan Lagu Kebangsaan Turki, nada demi nada. Arduino memainkan setiap nada dengan tinggi dan panjang yang tepat, membawakan dua bait lagu kebangsaan dari awal sampai akhir, lalu menunggu tekanan berikutnya. Kamu mendengar sendiri bagaimana komponen suara sederhana bisa berubah menjadi melodi.

Video

Skema rangkaian

Lagu Kebangsaan Turki dengan Buzzer - Circuit

Kode sumber

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Lagu Kebangsaan Turki dengan Buzzer
4// ─────────────────────────────────────────
5// Tekan tombol dan buzzer memainkan dua bait pertama Lagu Kebangsaan Turki
6// nada demi nada. Potensiometer yang diseri dengan buzzer mengatur volume.
7// Lirik: Mehmet Akif Ersoy, musik: Osman Zeki Ungor.
8//
9// Pin:
10//   D7 -> Tombol putar, kaki lainnya ke 5V
11//   D7 -> Resistor 10k ke GND (pull-down)
12//   D8 -> Potensiometer (volume) ke Buzzer +
13//   Buzzer - ke GND
14
15int buttonPin = 7;   // Tombol putar
16int buzzer = 8;      // Pin output buzzer
17
18// Frekuensi nada (Hz). Akhiran "d" berarti kres (ad = A#), 2 dan 3 adalah oktaf lebih tinggi
19int a = 440, ad = 466, b = 494, c = 523, cd = 554, d = 587, dd = 622, e = 659, f = 698;
20int fd = 740, g = 784, gd = 830, a2 = 880, ad2 = 932, b2 = 988, c2 = 1046, cd2 = 1108;
21int d2 = 1174, dd2 = 1244, e2 = 1318, f2 = 1396, fd2 = 1480, g2 = 1568, gd2 = 1660;
22int a3 = 1760;
23
24void setup() {
25  pinMode(buttonPin, INPUT);   // Input tombol (pull-down)
26  pinMode(buzzer, OUTPUT);
27}
28
29void loop() {
30  if (digitalRead(buttonPin)) {   // Tombol ditekan?
31    playSong();                   // Mainkan lagu kebangsaan dari awal sampai akhir
32  }
33}
34
35// Setiap tone() memulai satu nada dan delay() sesudahnya adalah panjang nada (ms). noTone()
36// menambah jeda singkat.
37void playSong() {
38  // Bait 1
39  // Lirik
40  tone(buzzer, c);
41  delay(800);
42  tone(buzzer, f);
43  delay(800);
44  tone(buzzer, g);
45  delay(800);
46  tone(buzzer, gd);
47  delay(800);
48  tone(buzzer, e);
49  delay(400);
50  tone(buzzer, g);
51  delay(200);
52  tone(buzzer, f);
53  delay(1600);
54  noTone(buzzer);
55  delay(300);
56
57  // Lirik
58  tone(buzzer, f);
59  delay(800);
60  tone(buzzer, ad2);
61  delay(800);
62  tone(buzzer, c2);
63  delay(800);
64  tone(buzzer, cd2);
65  delay(800);
66  tone(buzzer, a2);
67  delay(400);
68  tone(buzzer, c2);
69  delay(200);
70  tone(buzzer, ad2);
71  delay(1600);
72
73  // Lirik
74  tone(buzzer, c2);
75  delay(200);
76  tone(buzzer, ad2);
77  delay(200);
78  tone(buzzer, c2);
79  delay(200);
80  tone(buzzer, g);
81  delay(400);
82  noTone(buzzer);
83  delay(100);
84  tone(buzzer, g);
85  delay(400);
86  tone(buzzer, ad);
87  delay(200);
88  tone(buzzer, gd);
89  delay(400);
90  tone(buzzer, e);
91  delay(200);
92  tone(buzzer, f);
93  delay(400);
94  tone(buzzer, g);
95  delay(200);
96  tone(buzzer, gd);
97  delay(400);
98  tone(buzzer, ad);
99  delay(200);
100  tone(buzzer, c2);
101  delay(400);
102  tone(buzzer, cd2);
103  delay(200);
104  tone(buzzer, dd2);
105  delay(400);
106  tone(buzzer, f2);
107  delay(200);
108  tone(buzzer, dd2);
109  delay(400);
110
111  // Lirik
112  tone(buzzer, dd);
113  delay(200);
114  tone(buzzer, d);
115  delay(200);
116  tone(buzzer, dd);
117  delay(200);
118  tone(buzzer, c2);
119  delay(800);
120  tone(buzzer, ad);
121  delay(800);
122  tone(buzzer, gd);
123  delay(1600);
124
125  // Lirik
126  tone(buzzer, c);
127  delay(200);
128  tone(buzzer, b);
129  delay(200);
130  tone(buzzer, c);
131  delay(200);
132  tone(buzzer, g);
133  delay(800);
134  tone(buzzer, c);
135  delay(800);
136  tone(buzzer, c2);
137  delay(800);
138  tone(buzzer, ad);
139  delay(200);
140  tone(buzzer, gd);
141  delay(200);
142  tone(buzzer, g);
143  delay(400);
144  tone(buzzer, gd);
145  delay(200);
146  tone(buzzer, f);
147  delay(800);
148
149  // "Dir, Lirik
150  tone(buzzer, f2);
151  delay(800);
152  tone(buzzer, dd2);
153  delay(200);
154  tone(buzzer, cd2);
155  delay(400);
156  tone(buzzer, c2);
157  delay(200);
158  tone(buzzer, ad);
159  delay(400);
160  tone(buzzer, gd);
161  delay(200);
162  tone(buzzer, g);
163  delay(400);
164  tone(buzzer, f);
165  delay(200);
166  tone(buzzer, c2);
167  delay(400);
168  tone(buzzer, c);
169  delay(800);
170  tone(buzzer, f);
171  delay(1600);
172
173  // Bait 2
174  // Lirik
175  tone(buzzer, c);
176  delay(800);
177  tone(buzzer, f);
178  delay(800);
179  tone(buzzer, g);
180  delay(800);
181  tone(buzzer, gd);
182  delay(800);
183  tone(buzzer, e);
184  delay(400);
185  tone(buzzer, g);
186  delay(200);
187  tone(buzzer, f);
188  delay(1600);
189  noTone(buzzer);
190  delay(300);
191
192  // Lirik
193  tone(buzzer, f);
194  delay(800);
195  tone(buzzer, ad2);
196  delay(800);
197  tone(buzzer, c2);
198  delay(800);
199  tone(buzzer, cd2);
200  delay(400);
201  tone(buzzer, ad2);
202  delay(400);
203  tone(buzzer, a2);
204  delay(400);
205  tone(buzzer, c2);
206  delay(400);
207  tone(buzzer, ad2);
208  delay(800);
209
210  // Lirik
211  tone(buzzer, c2);
212  delay(200);
213  tone(buzzer, ad2);
214  delay(200);
215  tone(buzzer, c2);
216  delay(200);
217  tone(buzzer, g);
218  delay(400);
219  noTone(buzzer);
220  delay(100);
221  tone(buzzer, g);
222  delay(400);
223  tone(buzzer, ad);
224  delay(200);
225  tone(buzzer, gd);
226  delay(400);
227  tone(buzzer, e);
228  delay(200);
229  tone(buzzer, f);
230  delay(400);
231  tone(buzzer, g);
232  delay(200);
233  tone(buzzer, gd);
234  delay(400);
235  tone(buzzer, ad);
236  delay(200);
237  tone(buzzer, c2);
238  delay(400);
239  tone(buzzer, cd2);
240  delay(200);
241  tone(buzzer, dd2);
242  delay(400);
243  tone(buzzer, f2);
244  delay(200);
245  tone(buzzer, dd2);
246  delay(400);
247
248  // Lirik
249  tone(buzzer, dd);
250  delay(200);
251  tone(buzzer, d);
252  delay(200);
253  tone(buzzer, dd);
254  delay(200);
255  tone(buzzer, c2);
256  delay(800);
257  tone(buzzer, ad);
258  delay(800);
259  tone(buzzer, gd);
260  delay(1600);
261
262  // Lirik
263  tone(buzzer, c);
264  delay(200);
265  tone(buzzer, b);
266  delay(200);
267  tone(buzzer, c);
268  delay(200);
269  tone(buzzer, g);
270  delay(800);
271  tone(buzzer, c);
272  delay(800);
273  tone(buzzer, c2);
274  delay(800);
275  tone(buzzer, ad);
276  delay(200);
277  tone(buzzer, gd);
278  delay(200);
279  tone(buzzer, g);
280  delay(400);
281  tone(buzzer, gd);
282  delay(200);
283  tone(buzzer, f);
284  delay(800);
285
286  // Lirik
287  tone(buzzer, f2);
288  delay(800);
289  tone(buzzer, dd2);
290  delay(200);
291  tone(buzzer, cd2);
292  delay(400);
293  tone(buzzer, c2);
294  delay(200);
295  tone(buzzer, ad);
296  delay(400);
297  tone(buzzer, gd);
298  delay(200);
299  tone(buzzer, g);
300  delay(400);
301  tone(buzzer, f);
302  delay(200);
303  tone(buzzer, c2);
304  delay(400);
305  tone(buzzer, c);
306  delay(800);
307  tone(buzzer, f);
308  delay(1600);
309  noTone(buzzer);
310}
311

FAQ

Bagaimana nada musik diubah menjadi frekuensi?

Setiap nada sesuai dengan frekuensi tertentu; misalnya, C di oktaf ke-4 sekitar 262 Hz, dan A adalah 440 Hz. Di kode ini, frekuensinya disimpan di variabel terpisah. Panggilan `tone()` di playSong() memulai nada, dan panggilan `delay()` setelahnya menentukan durasinya.

Bagaimana cara mengubah tempo melodi?

Di kode ini, durasi nada ditentukan oleh nilai tetap di delay(). Untuk mempercepat melodi, kurangi durasi nada dan jeda dengan proporsi yang sama; untuk memperlambatnya, tambah durasinya. Untuk mengatur tempo dengan potensiometer, kamu perlu menambahkan pembacaan analog dan mengatur durasi-durasi ini dengan faktor yang dihitung dari bacaan itu.

Nada-nadanya menempel satu sama lain, bagaimana memisahkannya?

Setelah setiap nada, beri jeda hening singkat sekitar 10–30% dari durasi nada (noTone dan delay). Dengan begitu nada-nadanya terdengar terpisah.

Bisakah aku menambahkan laguku sendiri?

Bisa. Untuk menambahkan lagumu sendiri, kamu bisa mengubah frekuensi dan durasi nada di playSong(). Jika kamu lebih suka menyimpan nada dan durasinya di array, kamu juga harus menulis loop yang membaca array itu secara berurutan dan memanggil tone() serta delay(). Kamu bisa menemukan array nada siap pakai untuk banyak lagu di internet yang kompatibel dengan Arduino.