Isi kandungan:
- Langkah 1: Tukarkan Skor Muzik ke Nota Digital: Nilai Kelewatan
- Langkah 2: Tukarkan Skor Muzik ke Nota Digital: Nilai Hertz
- Langkah 3: Reka Bentuk Litar
- Langkah 4: Memuat Naik Kod: Cara
- Langkah 5: Memuat Naik Kod: Apa Artinya?
- Langkah 6: Selesai !
Video: Mendigitalkan Lagu Dengan Arduino: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Saya ingin membuat projek yang menggabungkan dua subjek kegemaran saya: sains dan muzik. Saya memikirkan semua cara untuk menggabungkan kedua-dua domain ini, dan, saya fikir akan menarik untuk membuat Arduino memainkan Fur Elise sambil memaparkan nada nota di Hertz. Sekarang, mari mula membina!
Anda memerlukan satu Arduino Uno atau Mega, banyak kabel jumper, buzzer Piezo, papan roti, skrin LCD 16 * 2 dengan semua pin pengelap di tempat, dan Potensiometer 10k (anda mungkin juga mendengarnya disebut sebagai potmeters). Sebaiknya kumpulkan semua bekalan ini sebelum kita memulakan pembinaan.
Langkah 1: Tukarkan Skor Muzik ke Nota Digital: Nilai Kelewatan
Terdapat dua langkah untuk mentranskripsikan nota dari skor secara digital ke dalam setara digitalnya. Pertama, kita perlu menulis masa nota berlangsung dalam milisaat. Saya menggunakan carta yang terdapat dalam talian untuk tugas ini. Berdasarkan sama ada nota itu adalah nota setengah, nota suku, nota kelapan, dan lain-lain, saya mentranskripsikan panjang nota menjadi milisaat. Anda boleh melihat nombor ini dalam kod saya sebagai kelewatan (); fungsi dan nombor dalam tanda kurung akan menjadi nilai kelewatan dalam milisaat yang kami tentukan dalam langkah ini.
Langkah 2: Tukarkan Skor Muzik ke Nota Digital: Nilai Hertz
Sebelum memulakan langkah ini, izinkan saya menentukan beberapa istilah teknikal. "Nilai" nota boleh digunakan secara bergantian dengan kata-kata "nada", "nilai", dan "nota". Sekarang, anda mesti membaca setiap nota lagu dari skor. Anda kemudiannya harus menerjemahkan setiap nota ke dalam Hertz menggunakan muzik ke meja Hertz, yang boleh anda temui dalam talian dengan mudah. Satu perkara yang perlu diingat ialah tengah C disenaraikan sebagai C4 di atas meja, dan oktaf yang lebih tinggi ialah C5, dan seterusnya. Setelah semua nota ini ditranskripsikan ke dalam Hertz, anda akan memasukkan nilai ke dalam nada fungsi (x, y, z); di mana X adalah nombor pin atau const int, cara menentukan pemboleh ubah yang akan saya terangkan kemudian. Y akan menjadi nilai Hertz yang baru anda transkripkan, dan Z akan menjadi panjang nota dalam milisaat yang dibundarkan ke perseratus terdekat. Kelewatan (); nilai akan menjadi tempoh nota. Sekarang, mari kita reka litar yang dapat memainkan muzik.
Langkah 3: Reka Bentuk Litar
Sekarang kita telah menerjemahkan semua nota ke dalam nilai digital yang dapat difahami oleh komputer, inilah masanya untuk membina litar. Mulailah dengan mengambil papan roti dan meletakkan skrin LCD dengan pin pertama (GND) di baris 14. Letakkan bel di mana sahaja yang anda suka, dan letakkan potensiometer di sebelahnya. Tujuannya adalah untuk mengatur segalanya, untuk mengurangkan kekacauan wayar. Letakkan Arduino di sebelah papan roti, dan sambungkan pin 5v ke rel positif papan roti, dan pin tanah ke rel negatif. Sekarang, kami bersedia untuk menghubungkan penerjun antara Arduino dan komponennya.
Sekarang, mari kita bincangkan mengenai pin pada LCD, dan cara memasangnya.
GND bermaksud tanah, ini adalah wayar negatif dalam arus terus. Kabel GND ke rel negatif papan roti.
VCC bermaksud Voltage di Common Collector, dan di sinilah anda menghubungkan sumber kuasa 5 volt anda (rel kuasa positif).
VO bermaksud Contrast, kawat ini ke pin tengah potensiometer. Sambungkan pin kiri potensiometer ke rel kuasa positif, dan pin kanan ke landasan kuasa tanah.
RS bermaksud Register Select, dan ini digunakan oleh Arduino untuk memberitahu paparan tempat menyimpan data. Sambungkan pin ini ke pin 12 di Arduino.
RW adalah singkatan dari pin Baca / Tulis, yang digunakan oleh Arduino untuk memeriksa apakah skrin menunjukkan apa yang telah anda aturkan untuk ditunjukkan. Sambungkan pin ini ke rel negatif di papan roti.
E bermaksud Enable, yang memberitahu LCD piksel mana yang hendak diaktifkan (hidupkan) atau nonaktifkan (matikan). Sambungkan pin ini ke pin Arduino 11.
D4, D5, D6, dan D7 adalah Pin paparan yang mengawal watak dan huruf yang dipaparkan. Sambungkannya ke pin Arduino masing-masing 5, 4, 3, dan 2.
Pin A, kadang-kadang berlabel LED, adalah anod LED untuk lampu latar. Sambungkan ini ke rel kuasa positif dengan wayar atau dengan perintang 220 ohm. Perintang lebih baik untuk penggunaan lebih lama kerana ia tidak menggunakan LCD, tetapi jika peranti tidak akan digunakan siang dan malam, anda tidak memerlukan perintang.
Pin K, kadang-kadang juga (membingungkan) LED berlabel, adalah pin ground LED. Sambungkan ini ke landasan kuasa bawah tanah.
Langkah 4: Memuat Naik Kod: Cara
Pasang Arduino anda ke USB komputer anda. Muat naik kod berikut menggunakan pengaturcara Arduino IDE.
#sertakan
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
batal persediaan () {
// tetapkan bilangan lajur dan baris LCD: lcd.begin (16, 2); // Cetak mesej ke LCD. lcd.print ("Hertz Pitch:!"); kelewatan (1000); gelung kekosongan () {// mainkan kelewatan e4 (600); // jeda untuk nada 0,6 saat (10, 329,63, 300); // putar e ke bel pada pin 10, berlangsung selama.3 saat lcd.print (" 329.63 "); // paparkan mesej di LCD" 329.63"
kelewatan (350); // kelewatan selama.35 saat
lcd.clear (); // kosongkan LCD dan tetapkan semula untuk mesej seterusnya // mainkan nada d4 # (10, 311.13, 300); lcd.print ("311.13"); kelewatan (350); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (350); lcd.clear (); // mainkan nada d4 # (10, 311.13, 300); lcd.print ("311.13"); kelewatan (350); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (350); lcd.clear (); // mainkan nada b3 (10, 246.94, 300); lcd.print ("246.94"); kelewatan (400); lcd.clear (); // mainkan nada d4 (10, 293.66, 300); lcd.print ("293.66"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 300); lcd.print ("261.63"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 900); lcd.print ("220.0"); kelewatan (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // mainkan nada d3 (10, 146.83, 300); lcd.print ("146.63"); kelewatan (350); lcd.clear (); // mainkan nada f3 (10, 174.61, 300); lcd.print ("174.61"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 300); lcd.print ("220"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 900); lcd.print ("246.94"); kelewatan (1000); lcd.clear ();
// main e3
nada (10, 164.81, 300); lcd.print ("164.81"); kelewatan (400); lcd.clear (); // mainkan nada # 3 (10, 207.65, 300); lcd.print ("207.65"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 300); lcd.print ("246.94"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 900); lcd.print ("261.63"); kelewatan (1000); lcd.clear (); // mainkan nada (10, 164.81, 300); lcd.print ("164.81"); kelewatan (400); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (400); lcd.clear (); // mainkan nada d4 # (10, 311.13, 300); lcd.print ("311.13"); kelewatan (400); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (400); lcd.clear (); // mainkan nada d4 # (10, 311.13, 300); lcd.print ("311.13"); kelewatan (400); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 300); lcd.print ("246.94"); kelewatan (400); lcd.clear (); // mainkan nada d4 (10, 293.66, 300); lcd.print ("293.66"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 300); lcd.print ("261.63"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 900); lcd.print ("220.0"); kelewatan (1000); lcd.clear (); // mainkan nada d3 (10, 146.83, 300); lcd.print ("146.83"); kelewatan (400); lcd.clear (); // mainkan nada f3 (10, 174.61, 300); // eeprom 20--6 yesno, flash 65--0 noyes lcd.print ("174.61"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 300); lcd.print ("220.0"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 900); lcd.print ("246.94"); kelewatan (1000); lcd.clear (); // mainkan nada f3 (10, 174.61, 300); lcd.print ("174.61"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 300); lcd.print ("261.63"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 300); lcd.print ("246.94"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 900); lcd.print ("220.0"); kelewatan (1000); lcd.clear (); // mainkan nada b3 (10, 246.94, 300); lcd.print ("246.94"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 300); lcd.print ("261.63"); kelewatan (400); lcd.clear (); // mainkan nada d4 (10, 293.66, 300); lcd.print ("293.66"); kelewatan (400); lcd.clear (); // mainkan nada e4 (10, 329.63, 900); lcd.print ("329.63"); kelewatan (1000); lcd.clear (); // mainkan nada g3 (10, 196, 300); lcd.print ("196.0"); kelewatan (400); lcd.clear (); // mainkan nada f4 (10, 349.23, 300); lcd.print ("349.23"); kelewatan (400); lcd.clear (); // mainkan nada e4 (10, 329.23, 300); lcd.print ("329.23"); kelewatan (400); lcd.clear (); // mainkan nada d4 (10, 293.63, 900); lcd.print ("293.63"); kelewatan (1000); lcd.clear (); // mainkan nada e3 (10, 164.81, 300); lcd.print ("164.81"); kelewatan (400); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (400); lcd.clear (); // mainkan nada d4 (10, 293.63, 300); lcd.print ("293.63"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 900); lcd.print ("261.63"); kelewatan (1000); lcd.clear (); // mainkan nada d3 (10, 146.83, 300); lcd.print ("146.83"); kelewatan (400); lcd.clear (); // mainkan nada d4 (10, 293.63, 300); lcd.print ("293.63"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 300); lcd.print ("261.63"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 900); lcd.print ("246.94"); kelewatan (1000); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (400); lcd.clear (); // mainkan nada d4 # (10, 311.13, 300); lcd.print ("311.13"); kelewatan (350); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (350); lcd.clear (); // mainkan nada d4 # (10, 311.13, 300); lcd.print ("311.13"); kelewatan (350); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (350); lcd.clear (); // mainkan nada b3 (10, 246.94, 300); lcd.print ("246.94"); kelewatan (400); lcd.clear (); // mainkan nada d4 (10, 293.66, 300); lcd.print ("293.66"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 300); lcd.print ("261.63"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 900); lcd.print ("220.0"); kelewatan (1000); lcd.clear (); // mainkan nada d3 (10, 146.83, 300); lcd.print ("146.83"); kelewatan (350); lcd.clear (); // mainkan nada f3 (10, 174.61, 300); lcd.print ("174.61"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 300); lcd.print ("220.0"); kelewatan (400); // main b3 lcd.clear (); nada (10, 246.94, 900); lcd.print ("246.94"); kelewatan (1000); lcd.clear (); // mainkan nada e3 (10, 164.81, 300); lcd.print ("164.81"); kelewatan (400); lcd.clear (); // mainkan nada # 3 (10, 207.65, 300); lcd.print ("207.65"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 300); lcd.print ("246.94"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 900); lcd.print ("261.63"); kelewatan (1000); kelewatan (300); lcd.clear (); // mainkan nada e3 (10, 164.81, 300); lcd.print ("164.81"); kelewatan (400); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (400); lcd.clear (); // mainkan nada d4 # (10, 311.13, 300); lcd.print ("311.13"); kelewatan (400); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (400); lcd.clear (); // mainkan nada d4 # (10, 311.13, 300); lcd.print ("311.13"); kelewatan (400); lcd.clear (); // mainkan nada e4 (10, 329.63, 300); lcd.print ("329.63"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 300); lcd.print ("246.94"); kelewatan (400); lcd.clear (); // mainkan nada d4 (10, 293.66, 300); lcd.print ("293.66"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 300); lcd.print ("261.63"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 900); lcd.print ("220.0"); kelewatan (1000); lcd.clear (); // mainkan nada d3 (10, 146.83, 300); lcd.print ("146.83"); kelewatan (400); lcd.clear (); // mainkan nada f3 (10, 174.61, 300); lcd.print ("174.61"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 300); lcd.print ("220.0"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 900); lcd.print ("246.94"); kelewatan (1000); lcd.clear (); // mainkan nada f3 (10, 174.61, 300); lcd.print ("174.61"); kelewatan (400); lcd.clear (); // mainkan nada c4 (10, 261.63, 300); lcd.print ("261.63"); kelewatan (400); lcd.clear (); // mainkan nada b3 (10, 246.94, 300); lcd.print ("246.94"); kelewatan (400); lcd.clear (); // mainkan nada a3 (10, 220, 900); lcd.print ("220.0"); kelewatan (1000); lcd.clear (); }
Langkah 5: Memuat Naik Kod: Apa Artinya?
Mari tentukan beberapa fungsi dalam bahasa Inggeris, supaya anda dapat memahami kodnya.
nada (x, y, z); = mainkan nada dengan nada y Hertz, ke bel pada pin x, untuk z milisaat.
lcd.print ("XYZ"); = mencetak mesej dengan watak XYZ ke layar LCD. (mis. paparkan nada Hertz)
kelewatan (x); = jeda untuk x milisaat.
const int X = Y = tetapkan pemboleh ubah tetap X ke pin Y, dan gunakan X atau Y sama ada untuk memberikan tugas ke peranti.
lcd.clear (); = kosongkan skrin LCD dan tetapkan semula untuk paparan baru
pinMode (X, OUTPUT); = tetapkan pin X untuk mod output
Setelah anda memahami semua fungsi ini, anda dapat dengan mudah mengganti pemboleh ubah dengan data yang anda kumpulkan semasa menterjemahkan lagu, dan kemudian anda dapat membuat kod lagu anda sendiri!
Langkah 6: Selesai !
Anda mempunyai Arduino yang memainkan Fur Elise dan memaparkan nilai not dalam Hertz, atau anda telah membuat Arduino yang memainkan melodi lagu yang anda pilih, dan memaparkan teks yang anda ingin tunjukkan. Terima kasih kerana melawat tutorial ini, dan saya berharap kepada anda projek ini di Arduino.
Disyorkan:
Arduino Piano Dengan Manual dan 7 Lagu Pratetap: 7 Langkah
Arduino Piano Dengan Manual dan 7 Lagu Pratetap: Papan Kekunci Arduino Piano yang bersambung dengan LCD mempunyai 2 mod. Mod Manual & Mod pratetap. Saya menggunakan 7 Push Button untuk piano 7 kekunci sederhana dan 1 butang untuk Mod Persediaan untuk beralih ke 7 lagu pratetap .. Lagu mod pratetap: Klik butang mod persediaan
Cara Mendigitalkan Slaid dan Negatif Filem Dengan DSLR: 12 Langkah (dengan Gambar)
Cara Mendigitalkan Slaid dan Negatif Filem Dengan DSLR: Persediaan serba boleh dan stabil untuk mendigitalkan slaid dan negatif dengan DSLR atau kamera mana pun dengan pilihan makro. Instruksional ini adalah kemas kini mengenai Cara mendigitalkan 35mm negatif (dimuat naik Julai 2011) dengan beberapa peningkatan untuk memperluas
Lagu Tema PUBG + Animasi Dengan Arduino !: 13 Langkah (dengan Gambar)
Lagu Tema PUBG + Animasi Bersama Arduino !: Halo di sana dan selamat datang untuk pengajaran yang menyeronokkan ini! Saya harap anda semua sihat dan kekal sihat. Projek kecil tetapi menakjubkan ini adalah tentang memainkan lagu tema PUBG dan bahkan membuat beberapa animasi permainan menggunakan arduino. Komponen yang digunakan sangat
Tutorial Arduino Uno # 2 - Lagu Buzzer: 4 Langkah (dengan Gambar)
Tutorial Arduino Uno # 2 - Lagu Buzzer: Halo semua, kerana saya melihat bahawa tutorial pertama saya adalah perjudian yang baik, saya memutuskan bahawa saya akan melakukan siri tutorial Arduino Uno untuk anda
Jam Penggera Sunrise LED Dengan Penggera Lagu yang Disesuaikan: 7 Langkah (dengan Gambar)
Jam Penggera Matahari LED Dengan Penggera Lagu yang Dapat Disesuaikan: Motivasi Saya Musim sejuk ini teman wanita saya menghadapi banyak masalah untuk bangun pada waktu pagi dan kelihatannya menderita SAD (Gangguan Afektif Musim). Saya bahkan menyedari betapa sukarnya bangun pada musim sejuk kerana matahari belum datang