Tentang proyek ini
Halo komunitas Hackster!
Saya Simone Adobs dan ini adalah proyek kedua saya yang saya rilis di situs ini.
Logika proyek ini sangat sederhana: - Ambil Remote Controller Anda dan pilih melodi yang ingin Anda mainkan;
- Arduino dengan Buzzer akan memainkan melodi;
- Pada Layar LCD Anda dapat melihat not musik dimainkan.
Beberapa penjelasan kode:
Ini adalah contoh melodi, semua melodi ditulis dengan cara ini:
void melodi_example() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Judul Lagu"); penundaan (1000); lcd.clear(); nota_mi(durasi,jeda); //notasi musik nota_do(durasi,jeda); //catatan musik lcd.clear(); penundaan(100); Setel Ulang_AVR(); //Perintah ini digunakan untuk mereset Arduino tanpa menekan tombol apapun}
Untuk menggunakan perintah "Reset_AVR()" Anda harus meletakkan kode ini di atas sketsa:
#include #include #define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}
Beginilah cara Arduino memahami melodi mana yang harus dimainkan:
if (result==12495) { //12495 adalah kode yang dikirim oleh Remote saya saat Anda menekan tombol 1 melody_1(); } else if (hasil==6375) { //6375 adalah kode tombol 2 melodi_2(); } else if (hasil==31365) { //31365 adalah kode tombol 3 melodi_3(); } else if (hasil==4335) { //4335 adalah kode tombol 4 melodi_4(); } }
void nota_example(int durasi, int pause) { shut(); // Perintah ini memanggil fungsi yang akan saya jelaskan di bawah lcd.setCursor(0, 0); lcd.print("Contoh"); //Cetak nama not musik NewTone(11,262,durasi); //11->Pin Buzzer - 262->penundaan kode catatan(jeda); //tunggu beberapa milidetik}
Apakah Anda ingin menghentikan melodi saat sedang diputar?
Tidak masalah, berkat fungsi "shut()" Anda dapat menghentikan melodi kapan pun Anda mau.
Ini adalah Fungsi "shut()":
void shut() { if (irrecv.decode(&results)) { //Menerima kode dari tombol yang ditekan result=results.value, HEX; //Simpan kode yang diterima Serial.println(result); if (result==-23971) { //-23971 pada Remote saya mewakili tombol shutdown Reset_AVR(); //Reset Arduino } } irrecv.resume(); //Memungkinkan Arduino untuk menerima kode baru dari Remote}
Saya harap Anda akan menyukai proyek ini dan jika ya, coba lihat proyek saya sebelumnya.
Semoga harimu menyenangkan..
Simone dari Italia <3
Kode
Mainkan MelodiC/C++
Salin kode ini di Arduino IDE#include #include #include #include #include #define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {} #define buzzer 11 LiquidCrystal lcd(9, 8, 7, 6, 5, 4);int result;int RECV_PIN=2;IRrecv irrecv(RECV_PIN);hasil decode_results; void setup() { Serial.begin(9600); lcd.begin(16,2); lcd.setCursor(0,0); lcd.print("-----Pilih-----"); lcd.setCursor(0,1); lcd.print("----Lagu!!----"); pinMode(buzzer, OUTPUT); irrecv.enableIRIn();} void loop() { if (irrecv.decode(&results)) { result=results.value, HEX; Serial.println(hasil); if (hasil==12495) { ode(); } else if (hasil==6375) { london(); } else if (hasil==31365) { bulu(); } else if (hasil==4335) { bajak laut(); } irrecv.resume(); } delay(100);} void bulu() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Bulu Elise"); penundaan (1000); lcd.clear(); nota_mi(150.200); nota_rez(150.200); nota_mi(150.200); nota_rez(150.200); nota_mi(150.200); nota_si(150.200); nota_rez(150.200); nota_do(150.200); nota_la(450.300); nota_do(150.200); nota_mi(150.200); nota_la(150.200); nota_si(450.300); nota_mi(150.200); nota_solz(150.200); nota_si(150.200); nota_do(450.300); nota_mi(150.200); nota_mi(150.200); nota_rez(150.200); nota_mi(150.200); nota_rez(150.200); nota_mi(150.200); nota_si(150.200); nota_rez(150.200); nota_do(150.200); nota_la(450.300); nota_do(150.200); nota_mi(150.200); nota_la(150.200); nota_sol(450.300); nota_mi(150.200); nota_do(150.200); nota_si(150.200); nota_la(600.800); nota_mi(150.200); nota_rez(150.200); nota_mi(150.200); nota_rez(150.200); nota_mi(150.200); nota_si(150.200); nota_rez(150.200); nota_do(150.200); nota_la(450.300); nota_do(150.200); nota_mi(150.200); nota_la(150.200); nota_si(450.300); nota_mi(150.200); nota_solz(150.200); nota_si(150.200); nota_do(450.300); lcd.clear(); penundaan(100); Reset_AVR();}tidak berlaku london() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Jembatan London"); lcd.setCursor(0,1); lcd.print("Terjatuh"); penundaan (1000); lcd.clear(); nota_sol(450.600); nota_la(150.200); nota_sol(300.400); nota_fa(300.400); nota_mi(300.400); nota_fa(300.400); nota_sol(600.800); nota_re(300.400); nota_mi(300.400); nota_fa(600.800); nota_mi(300.400); nota_fa(300.400); nota_sol(600.800); nota_sol(450.600); nota_la(150.200); nota_sol(300.400); nota_fa(300.400); nota_mi(300.400); nota_fa(300.400); nota_sol(600.800); nota_re(600.800); nota_sol(600.800); nota_mi(300.400); nota_do(450.600); lcd.clear(); penundaan(100); Reset_AVR();}void ode() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Bersyukurlah"); penundaan (1000); lcd.clear(); nota_mi(300.400); nota_mi(300.400); nota_fa(300.400); nota_sol(300.400); nota_sol(300.400); nota_fa(300.400); nota_mi(300.400); nota_re(300.400); nota_do(300.400); nota_do(300.400); nota_re(300.400); nota_mi(300.400); nota_mi(450.600); nota_re(150.200); nota_re(600.800); nota_mi(300.400); nota_mi(300.400); nota_fa(300.400); nota_sol(300.400); nota_sol(300.400); nota_fa(300.400); nota_mi(300.400); nota_re(300.400); nota_do(300.400); nota_do(300.400); nota_re(300.400); nota_mi(300.400); nota_re(450.600); nota_do(150.200); nota_do(600.800); nota_re(300.400); nota_re(300.400); nota_mi(300.400); nota_do(300.400); nota_re(300.400); nota_mi(150.200); nota_fa(150.200); nota_mi(300.400); nota_do(300.400); nota_re(300.400); nota_mi(150.200); nota_fa(150.200); nota_mi(300.400); nota_re(300.400); nota_do(300.400); nota_re(300.400); nota_sol(600.800); nota_mi(300.400); nota_mi(300.400); nota_fa(300.400); nota_sol(300.400); nota_sol(300.400); nota_fa(300.400); nota_mi(300.400); nota_re(300.400); nota_do(300.400); nota_do(300.400); nota_re(300.400); nota_mi(300.400); nota_re(450.600); nota_do(150.200); nota_do(600.800); lcd.clear(); penundaan(100); Reset_AVR();}batalkan bajak laut() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Dia Bajak Laut"); penundaan (1000); lcd.clear(); nota_mi(150.200); nota_sol(150.200); nota_la(300.400); nota_la(300.400); nota_la(150.200); nota_si(150.200); nota_do(300.400); nota_do(300.400); nota_do(150.200); nota_re(150.200); nota_si(300.400); nota_si(300.400); nota_la(150.200); nota_sol(150.200); nota_sol(150.200); nota_la(450.600); nota_mi(150.200); nota_sol(150.200); nota_la(300.400); nota_la(300.400); nota_la(150.200); nota_si(150.200); nota_do(300.400); nota_do(300.400); nota_do(150.200); nota_re(150.200); nota_si(300.400); nota_si(300.400); nota_la(150.200); nota_sol(150.200); nota_la(300.400); penundaan (400); nota_mi(150.200); nota_sol(150.200); nota_la(300.400); nota_la(300.400); nota_la(150.200); nota_do(150.200); nota_re(300.400); nota_re(300.400); nota_re(150.200); nota_mi(150.200); nota_fa(300.400); nota_fa(300.400); nota_mi(150.200); nota_re(150.200); nota_mi(150.200); nota_la(450.600); nota_la(150.200); nota_si(150.200); nota_do(300.400); nota_do(300.400); nota_re(300.400); nota_mi(150.200); nota_la(450.600); nota_la(150.200); nota_do(150.200); nota_si(300.400); nota_si(300.400); nota_do(150.200); nota_la(150.200); nota_si(900.1200); nota_si(300.400); nota_si(300.400); nota_do(150.200); nota_la(150.200); nota_si(900.1200); nota_si(300.400); nota_si(300.400); nota_la(150.200); nota_sol(150.200); nota_la(600.800); lcd.clear(); penundaan(100); Reset_AVR();}void shut() { if (irrecv.decode(&results)) { result=results.value, HEX; Serial.println(hasil); if (hasil==-23971) { Reset_AVR(); } } irrecv.resume();}void nota_do(int durasi, int jeda) { shut(); lcd.setCursor(0, 0); lcd.print("Lakukan "); Nada Baru(11,262,durasi); // LAKUKAN penundaan(jeda); }void nota_doz(int durasi, int jeda) { tutup(); lcd.setCursor(0, 0); lcd.print("Lakukan # "); Nada Baru(11,277,durasi); // LAKUKAN penundaan(jeda); }void nota_re(int durasi, int jeda) { tutup; lcd.setCursor(0, 0); lcd.print("Re"); Nada Baru (11.294, durasi); //RE penundaan(jeda); }void nota_rez(int durasi, int jeda) { tutup; lcd.setCursor(0, 0); lcd.print("Ulang#"); Nada Baru(11,311, durasi); //RE penundaan(jeda); }void nota_mi(int durasi, int pause) { tutup(); lcd.setCursor(0, 0); lcd.print("Mi"); Nada Baru (11.330, durasi); //penundaan MI(jeda); }void nota_fa(int durasi, int jeda) { tutup(); lcd.setCursor(0, 0); lcd.print("Fa"); Nada Baru(11.349,durasi); //penundaan FA(jeda); }void nota_faz(int durasi, int jeda) { tutup(); lcd.setCursor(0, 0); lcd.print("Fa#"); Nada Baru (11.370, durasi); //penundaan FA(jeda); }void nota_sol(int durasi, int jeda) { tutup(); lcd.setCursor(0, 0); lcd.print("Sol"); Nada Baru(11,392,durasi); //penundaan SOL(jeda); }void nota_solz(int durasi, int jeda) { tutup(); lcd.setCursor(0, 0); lcd.print("Sol#"); Nada Baru(11.415,durasi); //penundaan SOL(jeda); }void nota_la(int durasi, int jeda) { tutup(); lcd.setCursor(0, 0); lcd.print("La"); Nada Baru(11,440,durasi); //LA penundaan(jeda); } void nota_laz(int durasi, int jeda) { tutup(); lcd.setCursor(0, 0); lcd.print("La#"); Nada Baru(11.466,durasi); //LA penundaan(jeda); }void nota_si(int durasi, int jeda) { tutup(); lcd.setCursor(0, 0); lcd.print("Si"); Nada Baru(11,494, durasi); //penundaan SI(jeda); }
Skema
canzoni_con_tastiera_fQS3978roa.fzz