Proses manufaktur
| × | 1 | ||||
| × | 1 | ||||
| × | 8 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
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...
Lingkaran utama...
Mengakses menu...
// 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
//****************** 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; thisNoteLagu2Arduino
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; thisNoteLagu3Arduino
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 Lagu3Lagu4Arduino
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 Lagu4Lagu5Arduino
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 Lagu5pitches.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
Komponen dan persediaan Arduino Nano R3 × 1 WS2812B 8X32 RGB LED MATRIX × 1 Resistor 4.75k ohm × 3 Resistor 100k ohm × 2 Resistor 10k ohm × 2 Melalui Resistor Lubang, 390 ohm × 1 1N4007 – Tegangan Tinggi, Dioda Nilai Arus Tinggi B
Komponen dan persediaan Arduino UNO × 1 Resistor 1k ohm × 2 Kapasitor 100 F × 2 Resistor 100 ohm × 1 Emitter dan Detektor Inframerah SparkFun × 1 Kabel jumper (generik) × 1 Judul Wanita 8 Posisi 1 Baris (0,1) × 2 Male-He
Komponen dan persediaan Arduino Due × 1 Regulator Linier dengan Output yang Dapat Disesuaikan × 1 Texas Instruments Tujuan Umum Dual Op-Amp × 1 Resistor 20k ohm × 3 Resistor 220 ohm × 1 Resistor 1k ohm × 2 NPN Transistor Serbaguna
Komponen dan persediaan Arduino UNO × 1 Adafruit LCD Standar - 16x2 Putih di Atas Biru × 1 Sakelar Tombol Tekan SparkFun 12mm × 4 Resistor 10k ohm × 4 Resistor 221 ohm Yah, 220 ohm... × 2 Potensiometer Putaran Tunggal- 100k ohm × 1