Isi kandungan:

Mendigitalkan Lagu Dengan Arduino: 6 Langkah
Mendigitalkan Lagu Dengan Arduino: 6 Langkah

Video: Mendigitalkan Lagu Dengan Arduino: 6 Langkah

Video: Mendigitalkan Lagu Dengan Arduino: 6 Langkah
Video: Ricatech RR2000 Full-size 7-colour LED Retro Jukebox with Bluetooth, turntable, CD, USB-SD, radio 2024, November
Anonim
Mendigitalkan Lagu Dengan Arduino
Mendigitalkan Lagu Dengan Arduino

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

Tukarkan Skor Muzik ke Nota Digital: Nilai Kelewatan
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

Tukarkan Skor Muzik Ke Nota Digital: Nilai Hertz
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

Reka Bentuk Litar
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 !

Selesai !!!
Selesai !!!
Selesai !!!
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: