Daftar Isi:

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 proyek yang menggabungkan dua mata pelajaran favorit saya: sains dan musik. Saya memikirkan semua cara agar saya dapat menggabungkan dua domain ini, dan, saya pikir akan menarik untuk membuat Arduino memainkan Fur Elise sambil menampilkan nada nada dalam Hertz. Sekarang, mari kita mulai membangun!

Anda memerlukan satu Arduino Uno atau Mega, banyak kabel jumper, buzzer Piezo, papan tempat memotong roti, layar LCD 16*2 dengan semua pin penghapus terpasang, dan Potensiometer 10k (Anda mungkin juga mendengarnya disebut sebagai potmeter.). Yang terbaik adalah mengumpulkan semua persediaan ini sebelum kita mulai membangun.

Langkah 1: Ubah Skor Musik Menjadi Catatan Digital: Nilai Tunda

Ubah Skor Musik Menjadi Catatan Digital: Nilai Tunda
Ubah Skor Musik Menjadi Catatan Digital: Nilai Tunda

Ada dua langkah untuk menyalin catatan dari skor secara digital ke dalam ekuivalen digitalnya. Pertama, kita perlu menulis waktu nada berlangsung dalam milidetik. Saya menggunakan bagan yang ditemukan online untuk tugas ini. Berdasarkan apakah sebuah not adalah not setengah, not seperempat, not kedelapan, dll, saya menyalin panjang not ke dalam milidetik. Anda dapat melihat angka-angka ini dalam kode saya sebagai delay(); fungsi dan angka di dalam tanda kurung akan menjadi nilai penundaan dalam milidetik yang kami tentukan pada langkah ini.

Langkah 2: Ubah Skor Musik Menjadi Catatan Digital: Nilai Hertz

Ubah Skor Musik Menjadi Catatan Digital: Nilai Hertz
Ubah Skor Musik Menjadi Catatan Digital: Nilai Hertz

Sebelum memulai langkah ini, izinkan saya mendefinisikan beberapa istilah teknis. "Nilai" dari sebuah not dapat digunakan secara bergantian dengan kata-kata "pitch", "value", dan "note". Sekarang, Anda harus membaca setiap nada lagu dari skor. Anda kemudian harus menerjemahkan setiap nada ke dalam Hertz menggunakan musik ke tabel Hertz, yang dapat Anda temukan dengan mudah secara online. Satu hal yang perlu diingat adalah bahwa C tengah terdaftar sebagai C4 di atas meja, dan satu oktaf lebih tinggi adalah C5, dan seterusnya. Setelah semua nada ini ditranskripsikan ke dalam Hertz, Anda akan menempatkan nilainya ke dalam nada fungsi (x, y, z); dimana X adalah nomor pin atau const int, cara mendefinisikan variabel yang akan saya jelaskan nanti. Y akan menjadi nilai Hertz yang baru saja Anda transkripsikan, dan Z akan menjadi durasi nada dalam milidetik yang dibulatkan ke perseratus terdekat. Keterlambatan(); nilai akan menjadi durasi catatan. Sekarang, mari kita rancang sirkuit yang dapat memutar musik.

Langkah 3: Desain Sirkuit

Desain Sirkuit
Desain Sirkuit

Sekarang kita telah menerjemahkan semua not ke dalam nilai digital yang dapat dipahami oleh komputer, saatnya untuk membangun sirkuit. Mulailah dengan mengambil papan tempat memotong roti dan menempatkan layar LCD dengan pin pertama (GND) di baris 14. Tempatkan bel di mana saja Anda suka, dan letakkan potensiometer di sebelahnya. Tujuannya adalah untuk menyelaraskan semuanya, untuk meminimalkan kekacauan kabel. Tempatkan Arduino di sebelah breadboard, dan sambungkan pin 5v ke rel positif breadboard, dan pin ground ke rel negatif. Sekarang, kita siap untuk menghubungkan jumper antara Arduino dan komponen.

Sekarang, mari kita bicara tentang pin pada LCD, dan cara menghubungkannya.

GND adalah singkatan dari ground, ini adalah kabel negatif dalam arus searah. Hubungkan GND ke rel negatif papan tempat memotong roti.

VCC adalah singkatan dari Voltage at the Common Collector, dan di sinilah Anda menghubungkan sumber daya 5 volt Anda (rel daya positif).

VO adalah singkatan dari Contrast, sambungkan ini ke pin tengah potensiometer. Hubungkan pin kiri potensiometer ke rel daya positif, dan pin kanan ke rel daya ground.

RS adalah singkatan dari Register Select, dan ini digunakan oleh Arduino untuk memberi tahu tampilan tempat menyimpan data. Hubungkan pin ini ke pin 12 pada Arduino.

RW adalah singkatan dari Read/Write pin, yang digunakan Arduino untuk memeriksa apakah layar menunjukkan apa yang telah Anda programkan untuk ditampilkan. Hubungkan pin ini ke rel negatif pada papan tempat memotong roti.

E singkatan dari Enable, yang memberi tahu LCD piksel mana yang akan diaktifkan (dihidupkan) atau dinonaktifkan (dimatikan). Hubungkan pin ini ke pin Arduino 11.

D4, D5, D6, dan D7 adalah pin Display yang mengontrol karakter dan huruf yang ditampilkan. Hubungkan mereka ke pin Arduino 5, 4, 3, dan 2, masing-masing.

Pin A, terkadang diberi label LED, adalah anoda LED untuk lampu latar. Hubungkan ini ke rel daya positif dengan kabel atau dengan resistor 220-ohm. Resistor lebih baik digunakan lebih lama karena menghemat LCD, tetapi jika perangkat tidak akan digunakan siang dan malam, Anda tidak memerlukan resistor.

Pin K, terkadang juga (membingungkan) berlabel LED, adalah pin ground LED. Hubungkan ini ke rel listrik tanah.

Langkah 4: Mengunggah Kode: How-To

Colokkan Arduino Anda ke USB komputer Anda. Unggah kode berikut menggunakan programmer Arduino IDE.

#termasuk

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

batalkan pengaturan() {

// mengatur jumlah kolom dan baris LCD: lcd.begin(16, 2); // Mencetak pesan ke LCD. lcd.print("Pitch Hertz:!"); penundaan (1000); void loop() { // memutar e4 delay(600);//pause selama 0,6 detik nada(10, 329.63, 300);//memutar e ke buzzer di pin 10, berlangsung selama.3 detik lcd.print(" 329.63");//menampilkan pesan pada LCD "329.63"

delay(350);//delay selama.35 detik

lcd.clear();//clear LCD dan reset untuk pesan berikutnya // mainkan nada d4#(10, 311.13, 300); lcd.print("311.13"); penundaan (350); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (350); lcd.clear(); // mainkan nada d4#(10, 311.13, 300); lcd.print("311.13"); penundaan (350); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (350); lcd.clear(); // mainkan nada b3(10, 246.94, 300); lcd.print("246.94"); penundaan (400); lcd.clear(); // mainkan nada d4(10, 293,66, 300); lcd.print("293.66"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 300); lcd.print("261.63"); penundaan (400); lcd.clear(); // mainkan nada a3 (10, 220, 900); lcd.print("220.0"); penundaan (1000); lcd.clear();//line60//helpsave//avrdude.failure.eeprom // mainkan nada d3 (10, 146.83, 300); lcd.print("146.63"); penundaan (350); lcd.clear(); //mainkan nada f3(10, 174.61, 300); lcd.print("174.61"); penundaan (400); lcd.clear(); //mainkan nada a3(10, 220, 300); lcd.print("220"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 900); lcd.print("246.94"); penundaan (1000); lcd.clear();

// mainkan e3

nada (10, 164.81, 300); lcd.print("164.81"); penundaan (400); lcd.clear(); // mainkan nada g3# (10, 207.65, 300); lcd.print("207.65"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 300); lcd.print("246.94"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 900); lcd.print("261.63"); penundaan (1000); lcd.clear(); //mainkan nada e(10, 164.81, 300); lcd.print("164.81"); penundaan (400); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (400); lcd.clear(); // mainkan nada d4#(10, 311.13, 300); lcd.print("311.13"); penundaan (400); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (400); lcd.clear(); // mainkan nada d4#(10, 311.13, 300); lcd.print("311.13"); penundaan (400); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 300); lcd.print("246.94"); penundaan (400); lcd.clear(); // mainkan nada d4(10, 293,66, 300); lcd.print("293.66"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 300); lcd.print("261.63"); penundaan (400); lcd.clear(); // mainkan nada a3(10, 220, 900); lcd.print("220.0"); penundaan (1000); lcd.clear(); // mainkan nada d3(10, 146.83, 300); lcd.print("146.83"); penundaan (400); lcd.clear(); // mainkan nada f3(10, 174.61, 300); //eeprom 20--6 yesno, flash 65--0 noyes lcd.print("174.61"); penundaan (400); lcd.clear(); // mainkan nada a3(10, 220, 300); lcd.print("220.0"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 900); lcd.print("246.94"); penundaan (1000); lcd.clear(); // mainkan nada f3(10, 174.61, 300); lcd.print("174.61"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 300); lcd.print("261.63"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 300); lcd.print("246.94"); penundaan (400); lcd.clear(); // mainkan nada a3 (10, 220, 900); lcd.print("220.0"); penundaan (1000); lcd.clear(); // mainkan nada b3(10, 246.94, 300); lcd.print("246.94"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 300); lcd.print("261.63"); penundaan (400); lcd.clear(); // mainkan nada d4(10, 293,66, 300); lcd.print("293.66"); penundaan (400); lcd.clear(); // mainkan nada e4(10, 329.63, 900); lcd.print("329.63"); penundaan (1000); lcd.clear(); // mainkan nada g3(10, 196, 300); lcd.print("196.0"); penundaan (400); lcd.clear(); // mainkan nada f4(10, 349.23, 300); lcd.print("349.23"); penundaan (400); lcd.clear(); //mainkan nada e4(10, 329.23, 300); lcd.print("329.23"); penundaan (400); lcd.clear(); // mainkan nada d4(10, 293.63, 900); lcd.print("293.63"); penundaan (1000); lcd.clear(); // mainkan nada e3(10, 164.81, 300); lcd.print("164.81"); penundaan (400); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (400); lcd.clear(); // mainkan nada d4(10, 293.63, 300); lcd.print("293.63"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 900); lcd.print("261.63"); penundaan (1000); lcd.clear(); // mainkan nada d3(10, 146.83, 300); lcd.print("146.83"); penundaan (400); lcd.clear(); // mainkan nada d4(10, 293.63, 300); lcd.print("293.63"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 300); lcd.print("261.63"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 900); lcd.print("246.94"); penundaan (1000); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (400); lcd.clear(); // mainkan nada d4#(10, 311.13, 300); lcd.print("311.13"); penundaan (350); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (350); lcd.clear(); // mainkan nada d4#(10, 311.13, 300); lcd.print("311.13"); penundaan (350); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (350); lcd.clear(); // mainkan nada b3(10, 246.94, 300); lcd.print("246.94"); penundaan (400); lcd.clear(); // mainkan nada d4(10, 293.66, 300); lcd.print("293.66"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 300); lcd.print("261.63"); penundaan (400); lcd.clear(); // mainkan nada a3(10, 220, 900); lcd.print("220.0"); penundaan (1000); lcd.clear(); // mainkan nada d3(10, 146.83, 300); lcd.print("146.83"); penundaan (350); lcd.clear(); //mainkan nada f3(10, 174.61, 300); lcd.print("174.61"); penundaan (400); lcd.clear(); //mainkan nada a3(10, 220, 300); lcd.print("220.0"); penundaan (400); // mainkan b3 lcd.clear(); nada (10, 246.94, 900); lcd.print("246.94"); penundaan (1000); lcd.clear(); // mainkan nada e3(10, 164.81, 300); lcd.print("164.81"); penundaan (400); lcd.clear(); // mainkan nada g#3 (10, 207.65, 300); lcd.print("207.65"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 300); lcd.print("246.94"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 900); lcd.print("261.63"); penundaan (1000); penundaan (300); lcd.clear(); //mainkan nada e3(10, 164.81, 300); lcd.print("164.81"); penundaan (400); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (400); lcd.clear(); // mainkan nada d4#(10, 311.13, 300); lcd.print("311.13"); penundaan (400); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (400); lcd.clear(); // mainkan nada d4#(10, 311.13, 300); lcd.print("311.13"); penundaan (400); lcd.clear(); // mainkan nada e4(10, 329.63, 300); lcd.print("329.63"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 300); lcd.print("246.94"); penundaan (400); lcd.clear(); // mainkan nada d4(10, 293.66, 300); lcd.print("293.66"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 300); lcd.print("261.63"); penundaan (400); lcd.clear(); // mainkan nada a3 (10, 220, 900); lcd.print("220.0"); penundaan (1000); lcd.clear(); // mainkan nada d3(10, 146.83, 300); lcd.print("146.83"); penundaan (400); lcd.clear(); // mainkan nada f3(10, 174.61, 300); lcd.print("174.61"); penundaan (400); lcd.clear(); // mainkan nada a3 (10, 220, 300); lcd.print("220.0"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 900); lcd.print("246.94"); penundaan (1000); lcd.clear(); // mainkan nada f3(10, 174.61, 300); lcd.print("174.61"); penundaan (400); lcd.clear(); // mainkan nada c4(10, 261.63, 300); lcd.print("261.63"); penundaan (400); lcd.clear(); // mainkan nada b3(10, 246.94, 300); lcd.print("246.94"); penundaan (400); lcd.clear(); // mainkan nada a3 (10, 220, 900); lcd.print("220.0"); penundaan (1000); lcd.clear(); }

Langkah 5: Mengunggah Kode: Apa Artinya Semua Itu?

Mari kita definisikan beberapa fungsi dalam bahasa Inggris, sehingga Anda dapat memahami kodenya.

nada(x, y, z); = memainkan nada dengan titinada y Hertz, ke buzzer di pin x, selama z milidetik.

lcd.print("XYZ"); = mencetak pesan dengan karakter XYZ ke layar LCD. (misalnya menampilkan nada Hertz)

penundaan (x); = jeda selama x milidetik.

const int X=Y = atur variabel konstan X ke pin Y, dan gunakan X atau Y untuk menetapkan tugas ke perangkat.

lcd.clear(); = bersihkan layar LCD dan setel ulang untuk tampilan baru

pinMode(X, OUTPUT); = setel pin X untuk mode keluaran

Setelah Anda memahami semua fungsi ini, Anda dapat dengan mudah mengganti variabel dengan data yang Anda kumpulkan saat menerjemahkan lagu, dan Anda kemudian dapat mengkodekan lagu Anda sendiri!

Langkah 6: Selesai!

Selesai!!!
Selesai!!!
Selesai!!!
Selesai!!!

Anda memiliki Arduino yang memainkan Fur Elise dan menampilkan nilai not dalam Hertz, atau Anda telah membuat Arduino yang memainkan melodi lagu yang Anda pilih, dan menampilkan teks yang ingin Anda tampilkan. Terima kasih telah mengunjungi tutorial ini, dan saya berharap untuk Anda proyek ini di Arduino.

Direkomendasikan: