Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Keyboard Piano Elektronik Dengan Lagu Preset

Komponen dan persediaan

Arduino UNO
× 1
Adafruit LCD Standar - 16x2 Putih di Atas Biru
× 1
Sakelar Tombol Tekan SparkFun 12mm
× 8
Resistor 220 ohm
× 4
Resistor 560 ohm
× 1
Resistor 1k ohm
× 1
Resistor 4.7K ohm
× 1
Resistor 10k ohm
× 3
Resistor 1M ohm
× 1
Buzzer
× 1
LED (generik)
× 1
Potensiometer Putaran Tunggal- 10k ohm
× 1
Kabel jumper (generik)
× 1
Breadboard (generik)
× 1

Tentang proyek ini

Pendahuluan

Untuk memulai, saya harus memberitahu Anda bahwa saya benar-benar baru di dunia elektronik. Saya memiliki latar belakang yang baik dalam pengkodean, yang membantu, tetapi saya selalu terbuka untuk ide dan saran baru untuk proyek apa pun yang saya buat.

Baru-baru ini, saya telah belajar lebih banyak tentang Piezo Buzzer dan pengkodean yang terlibat, dan ini adalah kreasi saya berdasarkan apa yang telah saya pelajari sejauh ini. Ada banyak ruang untuk ekspansi dengan fitur atau sakelar baru, yang saya rencanakan untuk dilakukan nanti, tetapi untuk sekarang ini adalah tantangan berikutnya!

Di bawah ini adalah video cara kerja perangkat, termasuk menu lagu preset. Saya akui, secara teknis lagu 4 dan 5 adalah sama, tapi mau bagaimana lagi, saya memiliki keinginan untuk menciptakan hal-hal yang lebih besar dan lebih baik dan menulis kode musik untuk lebih banyak lagu bukanlah salah satunya! Pengkodean dasar untuk loop utama, dan loop lagu individual cukup mudah untuk disesuaikan dengan ide Anda sendiri, jadi jangan ragu untuk mengubahnya sesuka Anda.

Lihat aksinya!

Cara menyiapkan perangkat keras

Tombol piano...

Sakelar kunci piano dihubungkan menggunakan tangga resistor. Resistor ditempatkan secara berurutan, menghubungkan setiap sakelar ke daya. Untuk proyek saya, saya memilih untuk menggunakan (dalam ohm) 1M, 10k, 4.7K, 1K, 560, dan 220.  Sakelar piano pertama (di sebelah kiri) terhubung ke daya, dan juga ke sakelar berikutnya di sirkuit. Sakelar kedua terhubung ke resistor terkecil, dan setiap sakelar setelah itu terhubung ke resistor terbesar berikutnya dalam rangkaian. Sakelar terakhir menghubungkan koneksi melalui resistor 10k ohm dan juga menghubungkan semua 7 sakelar ke pin "analog in" A0 pada Arduino. Sketsa utama menentukan frekuensi not musik mana yang terkait dengan setiap tuts piano. Untuk proyek ini, saya menggunakan C4, D4, E4, F4, G4, A4, &B4, dengan C4 sebagai sakelar paling kiri. Ubah nilai frekuensi, atau tambahkan sakelar tambahan untuk sepenuhnya menyesuaikan proyek Anda sendiri!

Layar LCD...

Hubungkan pin LCD sesuai dengan diagram rangkaian di bawah ini. Hubungkan pin LCD 3 ke Potensiometer untuk kontrol kontras layar. Pin luar Potensiometer terhubung ke daya dan ground untuk menyelesaikan rangkaian ini. LCD pin 15 terhubung ke daya melalui resistor 220 ohm. Jika salah satu pin ini berubah pada proyek Anda sendiri, perbarui kode yang sesuai.

Tombol menu...

Hubungkan sakelar menu ke daya, dan hubungkan melalui resistor 10K ohm. Sakelar ini juga harus terhubung ke pin 7 pada Arduino sehingga Anda dapat mengontrolnya melalui pengkodean.

LED...

LED digunakan untuk menunjukkan saat Anda berada dalam "mode menu", dan tuts piano telah dinonaktifkan. Lampu LED menyala setelah tombol menu ditekan. Hubungkan anoda (positif) LED ke pin 6 Arduino, dan hubungkan LED melalui resistor 220 ohm.

Buzzer Piezo...

Untuk mengintegrasikan Piezo Buzzer, cukup sambungkan salah satu ujungnya ke pin 8 Arduino, dan sisi lainnya ke ground melalui resistor 220 ohm. Fungsi "nada" dalam kode akan mencari pin ini untuk memainkan nada yang dipanggil.

Cara kerja kode

Penyiapan...

  • Sketsa dimulai dengan mengimpor library "LiquidCrystal.h" dan "pitches.h" sehingga kami dapat mereferensikan berbagai item dari mereka nanti dalam kode
  • Selanjutnya, kode diatur dengan menentukan nama untuk sakelar menu, menentukan pin mana yang merupakan input vs. output, dan menyetel nilai frekuensi untuk masing-masing dari 7 tuts piano
  • Tab baru telah dibuat untuk setiap lagu dalam upaya untuk menjaga agar kode saya tetap teratur dan lebih mudah dipahami, dan untuk dikembangkan nanti. Jika Anda ingin menghapus atau menambahkan lebih banyak lagu, pastikan untuk mengubah kode di sketsa utama "Keyboard Elektronik" juga.

Lingkaran utama...

  • Keyboard dimulai dengan LED dimatikan, dan semua tuts piano aktif
  • Setelah loop mendeteksi bahwa tombol menu telah ditekan, tuts piano akan dinonaktifkan dan LED akan menyala untuk menunjukkan bahwa Anda berada dalam "mode menu"

Mengakses menu...

  • Tekan tombol menu untuk menelusuri lagu yang ada, dan tekan salah satu tuts piano untuk mulai memainkan lagu yang ditampilkan di layar LCD
  • Layar LCD akan menampilkan lagu mana yang sedang diputar, lalu kembali ke titik yang sama di menu setelah lagu selesai diputar. Dari sana, Anda dapat memutar ulang atau melanjutkan daftar lagu yang tersedia.
  • Mengklik dua kali tombol menu akan memulai ulang menu dari awal
  • Untuk kembali menggunakan tuts piano, putar sisa lagu di menu. Setelah layar LCD kosong, dan LED mati, tuts piano akan berfungsi kembali.

Kode

  • Keyboard Elektronik
  • Lagu1
  • Lagu2
  • Lagu3
  • Lagu4
  • Lagu5
  • pitches.h
Keyboard ElektronikArduino
Kode utama
// Layar LCD, Switch &Pengaturan LED#include #include "pitches.h"LiquidCrystal lcd(12, 11, 5, 4, 3, 2);const int LCDswitchPin =7; // tentukan nama sakelar menu/LCDint LCDswitchState =0; // setel status sakelar menu/LCD ke mati/rendah prevLCDswitchState =0;int blueLED =6;int LCDswitchCounter =0; // counter untuk jumlah penekanan tombol menu // (kode ini menghitung penekanan tombol menu, menampilkannya di komputer Anda, // dan mulai dari nol setelah mengakhiri "mode menu". saat ini tidak memiliki efek lain // pada sketsa ini , tetapi merupakan titik awal yang baik untuk mengembangkan proyek dengan // fitur baru nanti // Tombol Catatan Musik - Tetapkan nilai frekuensi dalam catatan[] ={262, 294, 330, 349, 392, 440, 494}; // Tetapkan nada C, D, E, F, G, A, B/////////////////////////////////////////////// //////////void setup() { Serial.begin(9600); lcd.begin(16, 2); pinMode(LCDswitchPin, INPUT); pinMode(blueLED, OUTPUT); digitalWrite(blueLED, LOW ); // LED mati saat tuts piano aktif } // akhiri pengaturan///////////////////////////////////////////////////////////////// /////////////void loop() { LCDswitchState =digitalRead(LCDswitchPin); int keyVal =analogRead(A0); Serial.println(keyVal); lcd.noDisplay(); digitalWrite(blueLED, LOW); // Matikan kembali LED setiap kali putaran utama dimulai // ************** MULAI "LCDstart" WHEN TOMBOL MENU DITEKAN *********** if (LCDswitchState ==HIGH) { digitalWrite(blueLED, HIGH); // Nyalakan LED untuk menunjukkan tuts piano dinonaktifkan dan perangkat dalam "mode menu" lcd.display(); lcd.clear(); LCDstart(); } // *********************************************** ************************ ////// KEYBOARD CATATAN &PERNYATAAN FREKUENSI //////// Gunakan tangga resistor yang Anda buat untuk ubah tegangan setiap tombol tuts piano// 220 ohm =C5 // 560 ohm =D5 // 1K ohm =E5 // dll... if(keyVal ==1023) { tone(8, notes[0]); // C } // akhiri if else if(keyVal>=990 &keyVal <=1010) { tone(8, notes[1]); // D } // akhiri else if else if(keyVal>=960 &&keyVal <=980) { tone(8, notes[2]); // E } // akhiri else if else if(keyVal>=900 &&keyVal <=945) { tone(8, notes[3]); // F } // akhiri else if else if(keyVal>=650 &&keyVal <=710) { tone(8, notes[4]); // G } // akhiri else if else if(keyVal>=500 &&keyVal <=550) { tone(8, notes[5]); // A } // akhiri else if else if(keyVal>=5 &&keyVal <=10) { tone(8, notes[6]); // B } // end else if else if(keyVal <=1) { // jika tidak ada tombol yang ditekan, jangan mainkan nada noTone(8); } // akhiri else if} //akhiri loop nada frekuensi/////////////////////////////////// ////////////////void LCDstart() { int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); // periksa status tombol menu saat (LCDswitchState ==LOW) { // lanjutkan loop saat tombol menu tidak ditekan LCDswitchState =digitalRead(LCDswitchPin); // periksa status tombol menu setiap kali loop dimulai //************* MULAI LAGU 1 TITLE LOOP ******************* * if (LCDswitchState ==HIGH) { // jika tombol menu ditekan, maka... LCDswitchCounter++; // setel jumlah tombol menjadi 1 Serial.print("jumlah penekanan tombol:"); Serial.println(LCDswitchCounter); penundaan (300); // menit waktu sampai hitungan menambahkan 1 Song1title(); lcd.clear(); merusak; } //************* ELSE SHOW MENU ****************else { // jika tombol menu tidak ditekan, maka... LCDswitchCounter=0; // setel jumlah tombol menu ke 0 lcd.clear(); lcd.setCursor(0, 0); lcd.print("LAGU MANA"); lcd.setCursor(0, 1); lcd.print("ANDA INGIN BERMAIN"); penundaan (50); // kembali ke main } } // end while } // end LCDstart loop // ************* LAGU 1 LOOP MULAI DI SINI ************* * void Lagu1judul() { int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); // periksa kembali status tombol menu saat (LCDswitchState ==LOW) { // lanjutkan loop saat tombol menu tidak ditekan LCDswitchState =digitalRead(LCDswitchPin); // periksa status tombol menu lagi //************* MULAI LAGU 2 TITLE LOOP ******************** jika ( LCDswitchState ==HIGH) { // jika tombol menu ditekan, maka... LCDswitchCounter++; // setel jumlah tombol menjadi 2 Serial.print("jumlah penekanan tombol:"); Serial.println(LCDswitchCounter); penundaan (300); // menit waktu sampai hitungan menambahkan 1 Song2title(); lcd.clear(); merusak; } else { // jika tombol menu tidak ditekan int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(LED biru, RENDAH); Lagu1(); merusak; } // akhiri jika lcd.clear(); lcd.setCursor(0, 0); lcd.print("SUPER MARIO BROS"); lcd.setCursor(0, 1); lcd.print("Lagu TEMA"); penundaan (50); } } // end while lagu 1 -> 2 } // end Song1title loop// ************* LAGU 2 LOOP MULAI DI SINI ************* * void Song2title() { int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); // periksa kembali status tombol menu saat (LCDswitchState ==LOW) { // lanjutkan loop saat tombol menu tidak ditekan LCDswitchState =digitalRead(LCDswitchPin); // periksa status tombol menu lagi //************* MULAI LAGU 3 TITLE LOOP ******************** jika ( LCDswitchState ==HIGH) { // jika tombol menu ditekan, maka... LCDswitchCounter++; // setel jumlah tombol menjadi 3 Serial.print("jumlah penekanan tombol:"); Serial.println(LCDswitchCounter); penundaan (300); // menit waktu sampai hitungan menambahkan 1 Song3title(); lcd.clear(); merusak; } else { // jika tombol menu tidak ditekan int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(LED biru, RENDAH); Lagu2(); merusak; } // akhiri jika lcd.clear(); lcd.setCursor(0, 0); lcd.print("SUPER MARIO BROS"); lcd.setCursor(0, 1); lcd.print("UNDERWORLD"); penundaan (50); } } // end while lagu 2 -> 3 } // end Song2title loop// ************* LAGU 3 LOOP MULAI DI SINI ************* * void Song3title() { int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); // periksa kembali status tombol menu saat (LCDswitchState ==LOW) { // lanjutkan loop saat tombol menu tidak ditekan LCDswitchState =digitalRead(LCDswitchPin); // periksa status tombol menu lagi //************* MULAI LAGU 4 TITLE LOOP ******************** jika ( LCDswitchState ==HIGH) { // jika tombol menu ditekan, maka... LCDswitchCounter++; // setel jumlah tombol menjadi 4 Serial.print("jumlah penekanan tombol:"); Serial.println(LCDswitchCounter); penundaan (300); // menit waktu sampai hitungan menambahkan 1 Song4title(); lcd.clear(); merusak; } else { // jika tombol menu tidak ditekan int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(LED biru, RENDAH); Lagu3(); merusak; } // akhiri jika lcd.clear(); lcd.setCursor(0, 0); lcd.print("JEOPARDY"); lcd.setCursor(0, 1); lcd.print("Lagu TEMA"); penundaan (50); } } // end while lagu 3 -> 4 } // end Song3title loop// ************* LAGU 4 LOOP MULAI DI SINI ************* * void Song4title() { int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); // periksa kembali status tombol menu saat (LCDswitchState ==LOW) { // lanjutkan loop saat tombol menu tidak ditekan LCDswitchState =digitalRead(LCDswitchPin); // periksa status tombol menu lagi //************* MULAI LAGU 5 TITLE LOOP ******************** jika ( LCDswitchState ==HIGH) { // jika tombol menu ditekan, maka... LCDswitchCounter++; // setel jumlah tombol menjadi 5 Serial.print("jumlah penekanan tombol:"); Serial.println(LCDswitchCounter); penundaan (300); // menit waktu sampai hitungan menambahkan 1 Song5title(); lcd.clear(); merusak; } else { // jika tombol menu tidak ditekan int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(LED biru, RENDAH); Lagu4(); merusak; } // akhiri jika lcd.clear(); lcd.setCursor(0, 0); lcd.print("Lagu 4"); lcd.setCursor(0, 1); lcd.print("JUDUL DI SINI"); penundaan (50); } } // end while lagu 4 -> 5 } // end Song4title loop// ************* LAGU 5 LOOP MULAI DI SINI ************* * void Song5title() { int keyVal =analogRead(A0); LCDswitchState =digitalRead(LCDswitchPin); // periksa kembali status tombol menu saat (LCDswitchState ==LOW) { // lanjutkan loop saat tombol menu tidak ditekan LCDswitchState =digitalRead(LCDswitchPin); // periksa status tombol menu lagi //************* MULAI LAGU 4 TITLE LOOP ******************** jika ( LCDswitchState ==HIGH) { // jika tombol menu ditekan, maka... LCDswitchCounter=0; // setel jumlah tombol ke 0 Serial.print("jumlah penekanan tombol:"); Serial.println(LCDswitchCounter); penundaan (300); // menit waktu sampai hitungan menambahkan 1 lagi lcd.clear(); } else { // jika tombol menu tidak ditekan int keyVal =analogRead(A0); Serial.println(keyVal); if(keyVal>=2) { digitalWrite(LED biru, RENDAH); Lagu5(); merusak; } // akhiri jika lcd.clear(); lcd.setCursor(0, 0); lcd.print("Lagu 5"); lcd.setCursor(0, 1); lcd.print("JUDUL DI SINI"); penundaan (50); } } // end while lagu 4 -> 5 } // end Song5title loop
Lagu1Arduino
Kode untuk lagu pertama. Saat ini Lagu Tema Mario Bros telah dimuat.
//****************** LAGU 1 CATATAN DI SINI *************** ***********/////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// /////////////////////// TUTORIAL LENGKAP CARA MEMBUAT LAGU MARIO BISA DILIHAT DI SINI:///////////// ///////////////////// http://www.linuxcircle.com/2013/03/31/playing-mario-bros-tune-with-arduino-and -piezo-buzzer/ //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// ////////void Song1() { lcd.clear();// not dalam melodi:int melodi[] ={ NOTE_E7, NOTE_E7, 0, NOTE_E7, 0, NOTE_C7, NOTE_E7, 0, NOTE_G7, 0, 0, 0, NOTE_G6, 0, 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, NOTE_AS6, NOTE_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7, NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6, 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, CATATAN_AS6, CATATAN_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7, NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6, 0, 0};// durasi not:4 =not seperempat, 8 =not kedelapan, dll.:int noteDurations[] ={ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 , 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 , 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12 , 12, 12, 12, 12, 12,}; lcd.setCursor(1, 0); lcd.print("Sedang diputar..."); lcd.setCursor(0, 1); lcd.print("LAGU TEMA MARIO"); int ukuran =sizeof(melodi) / sizeof(int); for (int thisNote =0; thisNote  
Lagu2Arduino
Kode untuk lagu ke-2. Saat ini Lagu Dunia Bawah Mario Bros telah dimuat.
//****************** LAGU 2 CATATAN DI SINI *************** ***********/////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// /////////////////////// TUTORIAL LENGKAP CARA MEMBUAT LAGU MARIO BISA DILIHAT DI SINI:///////////// ///////////////////// http://www.linuxcircle.com/2013/03/31/playing-mario-bros-tune-with-arduino-and -piezo-buzzer/ //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// ////////void Song2() { lcd.clear();// not dalam melodi:int melodi[] ={ NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_DS4, NOTE_CS4, NOTE_D4, NOTE_CS4, NOTE_DS4, NOTE_DS4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E3, NOTE_ AS4, NOTE_A4, NOTE_GS4, NOTE_DS4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, 0, 0};// durasi not:4 =not seperempat, 8 =not kedelapan, dll.:int noteDurations[] ={ 12, 12 , 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12 , 12, 12, 12, 6, 6, 18, 18, 18, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 10, 10, 10, 10, 10 , 10, 3, 3, 3}; lcd.setCursor(1, 0); lcd.print("Sedang diputar..."); lcd.setCursor(0, 1); lcd.print("MARIO UNDERWORLD"); int ukuran =sizeof(melodi) / sizeof(int); for (int thisNote =0; thisNote  
Lagu3Arduino
Kode untuk lagu ke-3. Saat ini Lagu Tema Jeopardy dimuat.
//****************** LAGU 3 CATATAN DI SINI **************** **********void Song3() { lcd.clear();// not dalam melodi:int melodi[] ={ NOTE_C2, NOTE_F3, NOTE_C3, NOTE_A2, NOTE_A2, NOTE_C3, NOTE_F3, NOTE_C3, NOTE_C3, NOTE_F3, NOTE_C3, NOTE_F3, NOTE_AS3, NOTE_G3, NOTE_F3, NOTE_E3, NOTE_D3, NOTE_CS3, NOTE_C2, NOTE_F3, NOTE_C3, NOTE_A2, NOTE_A2, // ulangi baris 1 dan 2 NOTE_C3, NOTE_F3, NOTE_AS_C3, NOTE_AS_C3 , NOTE_E3, NOTE_D3, NOTE_CS3, NOTE_C3};// durasi not:4 =not seperempat, 8 =not kedelapan, dst.:int noteDurations[] ={ 4, 4, 4, 8, 8, 4, 4, 2, 4, 4, 4, 4, 3, 8, 8, 8, 8, 8, 4, 4, 4, 8, 8, // ulangi baris 1 dan 2 4, 4, 2, 4, 8, 8, 4 , 4, 4, 4, 4, 4, 0}; lcd.setCursor(1, 0); lcd.print("Sedang diputar..."); lcd.setCursor(0, 1); lcd.print("JEOPARDY"); for (int thisNote =0; noteDurations[thisNote] !=0; thisNote++) { // untuk menghitung durasi nada, ambil satu detik // dibagi dengan jenis nada. //misalnya. not seperempat =1000 / 4, not kedelapan =1000/8, dst. int noteDuration =2000/noteDurations[thisNote]; nada(8, melodi[Catatan ini], durasi nada * 0.9); // untuk membedakan not, atur waktu minimum di antara not tersebut. // durasi catatan + 30% tampaknya berfungsi dengan baik://int pauseBetweenNotes =noteDuration * 1.30; //delay(jedaAntaraCatatan); penundaan (catatanDurasi); }Judul Lagu3(); } // akhiri loop Lagu3
Lagu4Arduino
Kode untuk lagu ke-4. Saat ini memiliki melodi generik yang pendek.
//****************** LAGU 4 CATATAN DI SINI *************** ***********void Song4() { lcd.clear();// not dalam melodi:int melodi[] ={ NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 };// durasi not:4 =not seperempat, 8 =not kedelapan, dst.:int noteDurations[] ={ 4, 8, 8, 4, 4, 4, 4, 4}; lcd.setCursor(1, 0); lcd.print("Sedang diputar..."); lcd.setCursor(0, 1); lcd.print("JUDUL LAGU 4"); int Catatan ini =0; // untuk menghitung durasi nada, ambil satu detik // dibagi dengan jenis nada. //misalnya. not seperempat =1000 / 4, not kedelapan =1000/8, dst. for (int thisNote =0; thisNote <8; thisNote++) { // untuk menghitung durasi not, ambil satu detik // dibagi dengan jenis not. //misalnya. not seperempat =1000 / 4, not kedelapan =1000/8, dst. int noteDuration =1000 / noteDurations[thisNote]; nada(8, melodi[Catatan ini], nadaDurasi); // untuk membedakan not, atur waktu minimum di antara not tersebut. // durasi catatan + 30% tampaknya berfungsi dengan baik:int pauseBetweenNotes =noteDuration * 1.30; delay(jedaAntaraCatatan); tidakNada(8); // menghentikan permainan nada:} // end forSong4title(); } // akhiri loop Lagu4
Lagu5Arduino
Kode untuk lagu ke-5. Saat ini memiliki melodi umum yang pendek.
//****************** LAGU 5 CATATAN DI SINI *************** ***********void Song5() { lcd.clear();// not dalam melodi:int melodi[] ={ NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 };// durasi not:4 =not seperempat, 8 =not kedelapan, dst.:int noteDurations[] ={ 4, 8, 8, 4, 4, 4, 4, 4}; lcd.setCursor(1, 0); lcd.print("Sedang diputar..."); lcd.setCursor(0, 1); lcd.print("JUDUL LAGU 5"); int Catatan ini =0; // untuk menghitung durasi nada, ambil satu detik // dibagi dengan jenis nada. //misalnya. not seperempat =1000 / 4, not kedelapan =1000/8, dst. for (int thisNote =0; thisNote <8; thisNote++) { // untuk menghitung durasi not, ambil satu detik // dibagi dengan jenis not. //misalnya. not seperempat =1000 / 4, not kedelapan =1000/8, dst. int noteDuration =1000 / noteDurations[thisNote]; nada(8, melodi[Catatan ini], nadaDurasi); // untuk membedakan not, atur waktu minimum di antara not tersebut. // durasi catatan + 30% tampaknya berfungsi dengan baik:int pauseBetweenNotes =noteDuration * 1.30; delay(jedaAntaraCatatan); tidakNada(8); // menghentikan permainan nada:} // end forSong5title(); } // akhiri loop Lagu5
pitches.hArduino
Perpustakaan catatan musik untuk lagu. Simpan di folder yang sama dengan sketsa keyboard/lagu Anda yang lain.
//********************************* *****************//** DEFINE MUSIC NOTES//************************ *************************#define NOTE_B0 31#define NOTE_C1 33#define NOTE_CS1 35#define NOTE_D1 37#define NOTE_DS1 39#define NOTE_E1 41# tentukan NOTE_F1 44# tentukan NOTE_FS1 46 # tentukan NOTE_G1 49 # tentukan NOTE_GS1 52 # tentukan NOTE_A1 55 # tentukan NOTE_AS1 58 # tentukan NOTE_B1 62 # tentukan NOTE_C2 65 # tentukan NOTE_CS2 69 # tentukan NOTE_D2 73# tentukan 78 87#define NOTE_FS2 93#define NOTE_G2 98#define NOTE_GS2 104#define NOTE_A2 110#define NOTE_AS2 117#define NOTE_B2 123#define NOTE_C3 131#define NOTE_CS3 139#define NOTE_D3 147#define NOTE definisikan NOTE_FS3 185#definisikan NOTE_G3 196#define NOTE_GS3 208#define NOTE_A3 220#define NOTE_AS3 233#define NOTE_B3 247#define NOTE_C4 262#define NOTE_CS4 277#define NOTE_D4 294#define NOTE_DS4 311 6e_E4 330#define NOTE_F4 349#define NOTE_FS4 370#define NOTE_G4 392#define NOTE_GS4 415#define NOTE_A4 440#define NOTE_AS4 466#define NOTE_B4 494#define NOTE_C5 523#define #define NOTE_CS5 554D #define NOTE_F5 698#define NOTE_FS5 740#define NOTE_G5 784#define NOTE_GS5 831#define NOTE_A5 880#define NOTE_AS5 932#define NOTE_B5 988#define NOTE_C6 1047#define NOTE_CS6 1109#define NOTE_Dfine NOTE_F6 1397#define NOTE_FS6 1480#define 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#define NOTE_D7 2349#define #define NOTE_FS7 2960#define NOTE_G7 3136#define NOTE_GS7 3322#define NOTE_A7 3520#define NOTE_AS7 3729#define NOTE_B7 3951#define NOTE_C8 4186#define NOTE_CS8 4435#define NOTE_D8 46998 #define NOTE_DS>  

Skema


Proses manufaktur

  1. Memulai TJBot
  2. Alarm Tanaman Peringatan Haus
  3. Jam Kata Italia
  4. Arduino + LED + Keyboard MIDI + MuseScore =Tutor Piano
  5. Sensor Kendala Sederhana dengan Arduino
  6. Sigfox kWh Meter
  7. Pemantau Suhu Bluetooth
  8. Radio Stereo Mini dengan RDA5807
  9. Kunci yang Dikendalikan Gerakan
  10. Ukur waktu reaksi Anda