- Hardware yang Dibutuhkan:
- Memahami fungsi Tone () dari Arduino:
- The pitches.h file header:
- Memainkan Catatan Musik di Arduino:
- Skema dan Perangkat Keras:
- Penjelasan Program Arduino:
- Cara Kerja Sirkuit Arduino Pemain Melodi ini:
Arduino adalah cara terbaik untuk menyederhanakan dan mempercepat proyek mikrokontroler Anda, berkat komunitas pengembangnya yang telah membuat hampir semuanya terlihat sederhana. Ada banyak Proyek Arduino di sini untuk Anda coba dan bersenang-senang. Beberapa proyek Anda mungkin memerlukan tindakan suara untuk memberi tahu tentang sesuatu atau hanya untuk mengesankan pemirsa. Bagaimana jika saya memberi tahu Anda bahwa hampir semua lagu tema yang dapat dimainkan dengan piano dapat ditiru di Arduino Anda dengan bantuan program sederhana dan speaker Piezo yang murah?
Dalam tutorial ini kita akan belajar betapa sederhananya dan mudahnya memainkan Melodi di Piezo Buzzer atau Speaker menggunakan fungsi nada Arduino (). Di akhir tutorial ini Anda akan bisa memainkan beberapa nada terkenal dari Pirates of Caribbean, Crazy Frog, Super Mario dan Titanic. Anda juga akan belajar cara memainkan musik piano apa pun dengan Arduino. Periksa Video di akhir.
Hardware yang Dibutuhkan:
- Arduino (versi apa pun - UNO digunakan di sini)
- Piezo Speaker / Buzzer atau speaker 8ohm lainnya.
- Papan tempat memotong roti
- Menghubungkan Kabel
- Tekan tombol
- Resistor 1k (opsional)
Memahami fungsi Tone () dari Arduino:
Sebelum kita dapat memahami cara kerja tone (), kita harus mengetahui cara kerja buzzer Piezo. Kita mungkin pernah belajar tentang kristal Piezo di sekolah kita, itu tidak lain adalah kristal yang mengubah getaran mekanis menjadi listrik atau sebaliknya. Di sini kami menerapkan arus variabel (frekuensi) yang dengannya kristal bergetar sehingga menghasilkan suara. Oleh karena itu untuk membuat bel Piezo mengeluarkan suara kita harus membuat kristal listrik Piezo bergetar, nada dan nada suara tergantung pada seberapa cepat kristal bergetar. Oleh karena itu nada dan nada dapat dikontrol dengan memvariasikan frekuensi arus.
Oke, jadi bagaimana kita mendapatkan frekuensi variabel dari Arduino ? Di sinilah fungsi tone () berperan. Tone () dapat menghasilkan frekuensi tertentu pada pin tertentu. Durasi waktu juga dapat disebutkan jika diperlukan. Sintaks untuk tone () adalah
Nada sintaks (pin, frekuensi) nada (pin, frekuensi, durasi) Pin parameter: pin untuk menghasilkan frekuensi nada: frekuensi nada dalam hertz - durasi int unsigned: durasi nada dalam milidetik (opsional) - panjang tak bertanda tangan
Nilai pin dapat berupa pin digital Anda. Saya telah menggunakan pin nomor 8 di sini. Frekuensi yang dapat dihasilkan tergantung pada ukuran timer di papan Arduino Anda. Untuk UNO dan kebanyakan papan umum lainnya frekuensi minimum yang dapat dihasilkan adalah 31Hz dan frekuensi maksimum yang dapat dihasilkan adalah 65535Hz. Namun kita manusia hanya dapat mendengar frekuensi antara 2000Hz dan 5000 Hz.
The pitches.h file header:
Sekarang, kita tahu cara menghasilkan beberapa noise menggunakan fungsi arduino tone () . Tapi, bagaimana kita tahu nada seperti apa yang akan dihasilkan untuk setiap frekuensi?
Arduino telah memberi kita tabel not yang menyamakan setiap frekuensi dengan jenis not musik tertentu. Tabel catatan ini aslinya ditulis oleh Brett Hagman, yang merupakan dasar dari perintah tone () . Kami akan menggunakan tabel catatan ini untuk memainkan tema kami. Jika Anda adalah seseorang yang akrab dengan partitur, Anda harus dapat memahami tabel ini, bagi orang lain seperti saya ini hanyalah satu blok kode.
# tentukan NOTE_B0 31 # tentukan NOTE_C1 33 # tentukan NOTE_CS1 35 # tentukan NOTE_D1 37 # tentukan NOTE_DS1 39 # tentukan NOTE_E1 41 # tentukan NOTE_F1 44 # tentukan NOTE_FS1 46 # tentukan NOTE_G1 49 # tentukan NOTE_GS1 52 # tentukan NOTE_A1 55 # NOTE_B1 62 # tentukan NOTE_C2 65 # tentukan NOTE_CS2 69 # tentukan NOTE_D2 73 # tentukan NOTE_DS2 78 # tentukan NOTE_E2 82 # tentukan NOTE_F2 87 # tentukan NOTE_FS2 93 # tentukan NOTE_G2 98 # tentukan NOTE_GS2 104 # tentukan NOTE_A2 110AS2 117_B 104 # tentukan NOTE_A2 110AS2 117_B 105 # tentukan NOTE_C3 131 # tentukan NOTE_CS3 139 # tentukan NOTE_D3 147 # tentukan NOTE_DS3 156 # tentukan NOTE_E3 165 # tentukan NOTE_F3 175 # tentukan NOTE_FS3 185 # tentukan NOTE_G3 196 # tentukan NOTE_GS3 208 # tentukan NOTE_A3 220 # tentukan 247 # tentukan CATATAN_B3 NOTE_C4 262 # tentukan NOTE_CS4 277 # tentukan NOTE_D4 294 # tentukan NOTE_DS4 311 # tentukan NOTE_E4 330 # tentukan NOTE_F4 349# tentukan NOTE_FS4 370 # tentukan NOTE_G4 392 # tentukan NOTE_GS4 415 # tentukan NOTE_A4 440 # tentukan NOTE_AS4 466 # tentukan NOTE_B4 494 # tentukan NOTE_C5 523 # tentukan NOTE_CS5 554 # tentukan NOTE_D5 587 # tentukan NOTE_DS5 622 #define NOTE 698 NOTE_FS5 740 # tentukan NOTE_G5 784 # tentukan NOTE_GS5 831 # tentukan NOTE_A5 880 # tentukan NOTE_AS5 932 # tentukan NOTE_B5 988 # tentukan NOTE_C6 1047 # tentukan NOTE_CS6 1109 # tentukan NOTE_D6 1175 # tentukan NOTE_DS6 1245 # define # 1480 # tentukan NOTE_G6 1568 # tentukan NOTE_GS6 1661 # tentukan NOTE_A6 1760 # tentukan NOTE_AS6 1865 # tentukan NOTE_B6 1976 # tentukan NOTE_C7 2093 # tentukan NOTE_CS7 2217 # tentukan NOTE_DFS 2349 # tentukan NOTE_DS7 2489 # tentukan NOTE_E7 # 2637 #define NOTE_60794 NOTE_G7 3136 # tentukan NOTE_GS7 3322 # tentukan NOTE_A7 3520 # tentukan NOTE_AS73729 # tentukan NOTE_B7 3951 # tentukan NOTE_C8 4186 # tentukan NOTE_CS8 4435 # tentukan NOTE_D8 4699 # tentukan NOTE_DS8 4978
Kode di atas diberikan dalam file header pitches.h di file zip ini , Anda hanya perlu mendownload dan memasukkan file ini ke dalam kode Arduino kami seperti yang diberikan di akhir tutorial ini atau menggunakan kode yang diberikan di file zip.
Memainkan Catatan Musik di Arduino:
Untuk memainkan melodi yang layak menggunakan Arduino kita harus tahu apa yang membentuk melodi ini. Tiga faktor utama yang dibutuhkan untuk memainkan sebuah tema adalah
- Nilai catatan
- Catat Durasi
- Tempo
Kami memiliki file header pitches.h untuk memainkan nilai not apa pun, sekarang kami harus mencari tahu durasi not spesifiknya untuk memainkannya. Tempo tidak lain adalah seberapa cepat melodi itu dimainkan. Setelah Anda mengetahui nilai Note dan durasi Note, Anda dapat menggunakannya dengan nada () seperti
tone (pinName, Note Value, Note Duration);
Untuk nada yang dimainkan dalam tutorial ini saya telah memberi Anda catatan Value dan durasi Note di dalam file header “themes.h” yang dapat digunakan untuk memainkannya dalam proyek Anda. Tetapi jika Anda memiliki nada tertentu di tambang Anda dan ingin memainkannya dalam proyek Anda, baca terus…. Lewati topik ini dan lanjutkan ke topik berikutnya.
Untuk memainkan nada tertentu Anda harus mendapatkan lembaran musik dari musik tersebut dan mengubah lembaran musik menjadi sketsa Arduino dengan membaca nilai nada dan durasi nada darinya. Jika Anda seorang siswa musik, itu akan menjadi sepotong kue untuk Anda, jika tidak menghabiskan waktu dan menghancurkan kepala Anda seperti yang saya lakukan. Tetapi pada akhirnya ketika nada Anda diputar di bel Piezo, Anda akan menemukan usaha Anda sepadan.
Setelah Anda memiliki nilai note dan durasi note, muat mereka ke dalam program di dalam file header “themes.h” seperti yang ditunjukkan di bawah ini
// ############## ** "HE IS A PIRATE" Lagu tema Pirates of caribbean ** ############## // int Pirates_note = {NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4 NOTE_A3, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_G4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_C4, NOTE_D4, 0, NOTE_A3, NOTE_C4, NOTE_B3, NOTE_DF4, NOTE4_B3, NOTE_B3 NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_D4, 0, 0, NOTE_A3, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_D4, NOTE_G4, NOTE_A4 0, NOTE_D4, NOTE_E3, NOTE_F4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_D4, 0, NOTE_D4, NOTE_F4,NOTE_E4, NOTE_E4, NOTE_F4, NOTE_D4}; int Pirates_duration = {4,8,4,8,4,8,8,8,8,4,8,4,8,4,8,8,8,8,4,8,4,8, 4, 8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,8,8, 4,4,8,8,4,4,8,4, 4,8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,4,8,4,8,8,8,4,4,8,8}; // ########### End of He adalah lagu Pirate ############# //
Blok kode di atas menunjukkan nilai note dan durasi note dari tema “He is a Pirate” dari film Pirates of the Caribbean. Anda dapat menambahkan tema Anda seperti ini.
Skema dan Perangkat Keras:
Skema proyek Arduino Tone Generator Project ini ditunjukkan pada gambar di bawah ini:
Koneksinya cukup sederhana, kami memiliki speaker Piezo yang terhubung ke pin 8 dan Ground of Arduino melalui resistor 1K. Resistor 1k ini merupakan resistor pembatas arus, yang digunakan untuk menjaga arus dalam batas aman. Kami juga memiliki empat tombol untuk memilih melodi yang diperlukan. Salah satu ujung sakelar terhubung ke ground dan ujung lainnya terhubung ke pin 2, 3, 4 dan 5 masing-masing. Sakelar akan menarik resistor yang diaktifkan secara internal menggunakan perangkat lunak. Karena rangkaiannya cukup sederhana maka dapat dihubungkan menggunakan papan roti seperti yang ditunjukkan di bawah ini:
Penjelasan Program Arduino:
Setelah Anda memahami konsepnya, program Arduino cukup mudah. Kode lengkap diberikan di akhir tutorial. Jika Anda tidak terbiasa menambahkan file header, Anda dapat mengunduh kode sebagai file ZIP dari sini dan langsung mengunggahnya ke Arduino Anda.
Dua di atas adalah file header yang harus ditambahkan. "Pitches.h" digunakan untuk menyamakan setiap not musik dengan frekuensi tertentu dan "themes.h" berisi nilai not dan durasi not dari keempat nada.
#include "pitches.h" #include "themes.h"
Sebuah fungsi dibuat untuk memainkan setiap nada saat diperlukan. Di sini, ketika fungsi Play_Pirates () disebut, nada "Dia adalah Bajak Laut" akan dimainkan. Fungsi ini terdiri dari fungsi nada yang menghasilkan frekuensi pada pin nomor 8. NoTone (8) dipanggil untuk menghentikan musik setelah dimainkan. Jika Anda ingin memainkan nada Anda sendiri, ubah Pirates_note dan Pirates_duration ke catatan baru dan nilai durasi yang telah Anda simpan di nilai "themes.h"
void Play_Pirates () {for (int thisNote = 0; thisNote <(sizeof (Pirates_note) / sizeof (int)); thisNote ++) {int noteDuration = 1000 / Pirates_duration; // konversikan durasi ke nada waktu tunda (8, Pirates_note, noteDuration); int pauseBetweenNotes = noteDuration * 1,05; // Di sini 1.05 adalah tempo, tingkatkan untuk memutarnya, penundaan lebih lambat (pauseBetweenNotes); noTone (8); }}
Pin 2, 3, 4 dan 5 digunakan untuk memilih nada tertentu yang akan dimainkan. Pin ini dipegang tinggi secara default menggunakan resistor pull up internal dengan menggunakan baris kode di atas. Saat tombol ditekan, tombol ditarik ke tanah.
pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); pinMode (4, INPUT_PULLUP); pinMode (5, INPUT_PULLUP);
Blok kode di bawah ini digunakan untuk memutar lagu ketika tombol ditekan. Itu membaca nilai digital dari setiap tombol dan ketika menjadi rendah (nol) itu mengasumsikan bahwa tombol ditekan dan memainkan nada masing-masing dengan memanggil fungsi yang diperlukan.
if (digitalRead (2) == 0) {Serial.println ("Selected -> 'He is a Pirate'"); Play_Pirates (); } if (digitalRead (3) == 0) {Serial.println ("Selected -> 'Crazy Frog'"); Play_CrazyFrog (); } if (digitalRead (4) == 0) {Serial.println ("Selected -> 'Mario UnderWorld'"); Play_MarioUW (); } if (digitalRead (5) == 0) {Serial.println ("Selected -> 'He is a Pirate'"); Play_Pirates (); }
Cara Kerja Sirkuit Arduino Pemain Melodi ini:
Setelah Kode dan Perangkat Keras Anda siap, cukup bakar program ke Arduino Anda dan Anda harus dapat memainkan nada hanya dengan menekan tombol. Jika Anda memiliki masalah, lihat monitor serial Anda untuk debugging atau gunakan bagian komentar untuk melaporkan masalah dan saya akan dengan senang hati membantu Anda.
Pekerjaan lengkap proyek ini ditunjukkan pada video di bawah ini. Semoga Anda menikmati proyek ini dan akan menggunakannya dalam beberapa proyek Anda atau menciptakan nada baru untuk proyek Anda. Jika ya, silakan bagikan pekerjaan Anda di bagian komentar.