- Perkakasan Diperlukan:
- Memahami fungsi Tone () Arduino:
- The pitches.h fail header:
- Memainkan Nota Muzik di Arduino:
- Skematik dan Perkakasan:
- Penjelasan Program Arduino:
- Mengendalikan Melodi Player Arduino Circuit ini:
Arduino adalah kaedah terbaik untuk mempermudah dan mempercepat projek mikrokontroler anda, terima kasih kepada komuniti pemaju yang menjadikan hampir semuanya kelihatan mudah. Terdapat banyak Projek Arduino di sini untuk anda mencuba dan berseronok. Sebilangan projek anda mungkin memerlukan tindakan suara untuk memberitahu tentang sesuatu atau hanya untuk menarik perhatian penonton. Bagaimana jika saya memberitahu anda bahawa hampir semua lagu tema yang dapat dimainkan di piano boleh ditiru di Arduino anda dengan bantuan program sederhana dan pembicara Piezo yang murah?
Dalam tutorial ini kita akan belajar betapa mudah dan senangnya Main Melody di Piezo Buzzer atau Speaker menggunakan fungsi nada Arduino (). Pada akhir tutorial ini, anda akan dapat memainkan beberapa nada terkenal Pirates of Caribbean, Crazy Frog, Super Mario dan Titanic. Anda juga akan belajar memainkan muzik piano dengan Arduino. Lihat Video di akhir.
Perkakasan Diperlukan:
- Arduino (versi apa pun - UNO digunakan di sini)
- Piezo Speaker / Buzzer atau pembesar suara 8ohm yang lain.
- Papan roti
- Wayar Penyambung
- Tekan butang
- Perintang 1k (pilihan)
Memahami fungsi Tone () Arduino:
Sebelum kita dapat memahami bagaimana nada () berfungsi, kita harus mengetahui bagaimana bunyi Piezo. Kita mungkin pernah belajar tentang kristal Piezo di sekolah kita, ia hanyalah kristal yang menukar getaran mekanikal menjadi elektrik atau sebaliknya. Di sini kita menggunakan arus berubah (frekuensi) di mana kristal bergetar sehingga menghasilkan bunyi. Oleh itu, untuk membuat pengeras suara Piezo membuat sedikit bunyi, kita harus menjadikan kristal elektrik Piezo bergetar, nada dan nada bunyi bergantung pada seberapa pantas kristal bergetar. Oleh itu nada dan nada dapat dikawal dengan mengubah frekuensi arus.
Baiklah, jadi bagaimana kita mendapatkan frekuensi berubah dari Arduino ? Di sinilah fungsi nada () masuk. Nada () dapat menghasilkan frekuensi tertentu pada pin tertentu. Tempoh masa juga dapat disebut jika diperlukan. Sintaks untuk nada () adalah
Nada sintaks (pin, frekuensi) nada (pin, frekuensi, tempoh) Pin parameter: pin yang akan menghasilkan frekuensi nada: frekuensi nada dalam hertz - durasi int yang tidak ditandatangani: jangka masa nada dalam milisaat (pilihan) - tidak bertanda panjang
Nilai pin boleh menjadi pin digital anda. Saya telah menggunakan pin nombor 8 di sini. Kekerapan yang boleh dihasilkan bergantung pada ukuran pemasa di papan Arduino anda. Untuk UNO dan kebanyakan papan umum lain frekuensi minimum yang dapat dihasilkan ialah 31Hz dan frekuensi maksimum yang dapat dihasilkan ialah 65535Hz. Bagaimanapun kita manusia hanya dapat mendengar frekuensi antara 2000Hz dan 5000 Hz.
The pitches.h fail header:
Sekarang, kita tahu bagaimana menghasilkan bunyi dengan menggunakan fungsi nada arduino () . Tetapi, bagaimana kita tahu jenis nada apa yang akan dihasilkan untuk setiap frekuensi?
Arduino telah memberi kami jadual nota yang menyamakan setiap frekuensi dengan jenis nota muzik tertentu. Jadual nota ini pada asalnya ditulis oleh Brett Hagman, berdasarkan karya yang berdasarkan perintah nada () . Kami akan menggunakan jadual nota ini untuk memainkan tema kami. Sekiranya anda seorang yang biasa dengan muzik lembaran, anda seharusnya dapat memahami jadual ini, kerana orang lain seperti saya ini hanyalah sekumpulan kod yang lain.
#define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 # tentukan NOTE_G1 49 #definisikan_Gambar 49 #definisikan_Gambar 49 #definisi 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 NOTA_142kan_NYA_NET_NET_NYA # 123_tentukan #Berminkan_tanda #tentukan NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_FS3 185 # tentukan NOTE_G3 196 #define NOTE_dine_fine_dine_fine_fine_fine_fine_fine_fine_fine_foto2 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 #definisikan #Berikan_fine_betulkan_5d_fine_fine #beritahu_Berminat 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_C6 1047 # tentukan NOTE_CS6 1109 # tentukan NOTA_146betulkan # 146d_fine_define_fine 134 #definisi NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 # tentukan NOTE_C77 2217 # tentukan NOTE_D7 2349 #definisikan_fine_fine_fine_fine_fine_fine_fine_foto_foto_foto 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
Kod di atas diberikan dalam file header pitches.h dalam fail zip ini , anda hanya perlu memuat turun dan memasukkan fail ini dalam kod Arduino kami seperti yang diberikan pada akhir tutorial ini atau menggunakan kod yang diberikan dalam fail zip.
Memainkan Nota Muzik di Arduino:
Untuk memainkan melodi yang baik menggunakan Arduino, kita harus tahu apa yang melodi ini. Tiga faktor utama yang diperlukan untuk memainkan tema adalah
- Nilai nota
- Tempoh Catatan
- Tempo
Kami mempunyai fail tajuk pitches.h untuk memainkan sebarang nilai nota, sekarang kami harus mengetahui jangka masa nota khusus untuk memainkannya. Tempo tidak lain hanyalah seberapa pantas melodi dimainkan. Setelah anda mengetahui nilai Catatan dan tempoh Catatan anda boleh menggunakannya dengan nada () seperti
nada (pinName, Nilai Catatan, Tempoh Catatan);
Untuk nada yang dimainkan dalam tutorial ini, saya telah memberi anda Nilai nota dan tempoh Catatan dalam fail tajuk "themes.h" dengan menggunakan mana anda dapat memainkannya dalam projek anda. Tetapi jika anda mempunyai nada tertentu di dalam nada anda dan anda mahu memainkannya dalam projek anda, baca…. Else lewati topik ini dan jatuh ke topik seterusnya.
Untuk memainkan nada tertentu, anda perlu mendapatkan muzik lembaran muzik tertentu dan menukar muzik lembaran menjadi lakaran Arduino dengan membaca nilai nota dan tempoh nota daripadanya. Sekiranya anda seorang pelajar muzik, ia akan menjadi sebilangan kek untuk anda, jika tidak, luangkan sedikit masa dan hancurkan kepala anda seperti yang saya lakukan. Tetapi pada penghujung hari apabila nada anda bermain di bel Piezo, anda akan dapati usaha anda berbaloi.
Setelah anda mempunyai nilai nota dan durasi nota, masukkan ke dalam program di dalam fail tajuk "themes.h" seperti yang ditunjukkan di bawah
// ############## ** "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, NOT__4, NOT__4, NOT__4, NOT__4, NOT__4, NOT__4 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_E4, NOTE_D4, NOTE_C4, NOTE_C4, NOT__4, NOT__4, NOT__4, NOT_ 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_D4, NOTE_D4, NOTE_F4, NOTE_G4, NOTE_G4, NOT__4, NOT__4, NOTA_ 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}; // ########### Akhir Dia adalah lagu Bajak Laut ############# //
Blok kod di atas menunjukkan nilai nota dan tempoh nota tema "Dia adalah Pirate" dari filem Pirates of the Caribbean. Anda boleh menambah tema anda seperti ini.
Skematik dan Perkakasan:
Skema projek Arduino Tone Generator Project ini ditunjukkan dalam gambar di bawah:
Sambungannya cukup mudah, kami mempunyai pembesar suara Piezo yang disambungkan ke pin 8 dan Ground of the Arduino melalui perintang 1K. Perintang 1k ini adalah perintang penghad semasa, yang digunakan untuk memastikan arus berada dalam had selamat. Kami juga mempunyai empat suis untuk memilih melodi yang diperlukan. Satu hujung suis disambungkan ke tanah dan hujung yang satu lagi dihubungkan ke pin 2, 3, 4 dan 5 masing-masing. Suis akan mempunyai perintang penarik yang diaktifkan secara dalaman menggunakan perisian. Oleh kerana litarnya cukup mudah, ia boleh disambungkan menggunakan papan roti seperti di bawah:
Penjelasan Program Arduino:
Setelah anda memahami konsepnya, program Arduino akan berjalan lancar. Kod lengkap diberikan pada akhir tutorial. Sekiranya anda tidak biasa dengan menambahkan fail header, anda boleh memuat turun kod tersebut sebagai fail ZIP dari sini dan memuat naiknya terus ke Arduino anda.
Dua perkara di atas adalah fail header yang harus ditambah. "Pitches.h" digunakan untuk menyamakan setiap nota muzik dengan frekuensi tertentu dan "tema.h" mengandungi nilai nota dan durasi nota keempat-empat nada.
#include "pitches.h" #include "tema.h"
Fungsi dibuat untuk memainkan setiap nada apabila diperlukan. Di sini apabila fungsi Play_Pirates () disebut "Dia adalah Pirate" nada akan dimainkan. Fungsi ini terdiri daripada fungsi nada yang menghasilkan frekuensi pada nombor pin 8. NoTone (8) dipanggil untuk menghentikan muzik sebaik sahaja ia dimainkan. Sekiranya anda ingin memainkan nada anda sendiri, ubah Pirates_note dan Pirates_duration ke nilai nota dan durasi baru yang telah anda simpan dalam nilai "themes.h"
batal Play_Pirates () {untuk (int thisNote = 0; thisNote <(sizeof (Pirates_note) / sizeof (int)); thisNote ++) {int noteDuration = 1000 / Pirates_duration; // ubah tempoh menjadi nada tunda waktu (8, Pirates_note, noteDuration); int pauseBetweenNotes = noteDuration * 1.05; // Di sini 1.05 adalah tempo, tingkatkan untuk memainkannya lebih lambat (pauseBetweenNotes); noTone (8); }}
Pin 2, 3, 4 dan 5 digunakan untuk memilih nada tertentu yang akan dimainkan. Pin ini dipegang tinggi secara lalai menggunakan perintang penarik dalaman dengan menggunakan garis kod di atas. Apabila butang ditekan, ia ditarik ke tanah.
pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); pinMode (4, INPUT_PULLUP); pinMode (5, INPUT_PULLUP);
Blok kod di bawah digunakan untuk memainkan lagu ketika butang ditekan. Ia membaca nilai digital setiap butang dan apabila ia menjadi rendah (sifar) ia menganggap bahawa butang ditekan dan memainkan nada masing-masing dengan memanggil fungsi yang diperlukan.
if (digitalRead (2) == 0) {Serial.println ("Terpilih -> 'Dia adalah Lanun'"); Play_Pirates (); } if (digitalRead (3) == 0) {Serial.println ("Terpilih -> 'Crazy Frog'"); Main_CrazyFrog (); } if (digitalRead (4) == 0) {Serial.println ("Terpilih -> 'Mario UnderWorld'"); Main_MarioUW (); } if (digitalRead (5) == 0) {Serial.println ("Terpilih -> 'Dia adalah Lanun'"); Play_Pirates (); }
Mengendalikan Melodi Player Arduino Circuit ini:
Setelah Kod dan Perkakasan anda siap, cukup masukkan program ke Arduino anda dan anda seharusnya dapat memainkan nada dengan hanya menekan butang. Sekiranya anda mempunyai masalah, perhatikan monitor bersiri anda untuk melakukan penyahpepijatan atau gunakan bahagian komen untuk melaporkan masalah dan saya dengan senang hati akan membantu anda.
Kerja-kerja projek yang lengkap ditunjukkan dalam video di bawah. Semoga anda menikmati projek ini dan menggunakannya dalam beberapa projek anda atau mencipta nada baru untuk projek anda. Sekiranya ya, silakan berkongsi karya anda di bahagian komen.