Isi kandungan:

Piano Arduino: 3 Langkah
Piano Arduino: 3 Langkah

Video: Piano Arduino: 3 Langkah

Video: Piano Arduino: 3 Langkah
Video: #204 - How to make arduino piano 2024, Julai
Anonim
Piano Arduino
Piano Arduino

"Piano" ini dapat memainkan oktaf piano sebenar. Menekan butang akan mewakili penekanan kekunci pada piano. Suara akan disampaikan melalui pembesar suara Piezo.

Langkah 1: Bahan

1. Arduino Uno

2. Kawat USB

3. 3 papan roti

4. 8 Butang tekan

5. 8 100 perintang Ohm

6. Penceramah "Piezo"

7. Banyak Kabel Lelaki (Lebih kurang 20)

8. Besi Pematerian

Langkah 2: Bina Persediaan

Bina Persediaan
Bina Persediaan

Bangun 8 butang dengan masing-masing masuk ke dalam 8 pin yang berbeza di Arduino, tambahkan perintang ke masing-masing, dan sambungkan ke tanah (menggunakan wayar Male).

Sambungkan pembesar suara ke pin Arduino yang ditentukan, dan sisi lain ke tanah. Anda perlu memasangkan wayar ke pembesar suara supaya tidak jatuh. Pastikan kedua-dua wayar yang dipateri ke pembesar suara tidak saling bersentuhan.

Langkah 3: Membina Kod

#tentukan NOTE_B0 31 # tentukan NOTE_C1 33 # tentukan NOTE_CS1 35 # tentukan NOTE_D1 37 # tentukan NOTE_DS1 39 # tentukan NOTE_E1 41 # tentukan NOTE_F1 44 # tentukan NOTE_FS1 46 # tentukan NOTE_G1 49 # tentukan # NOTA # 55Tentukan #NYA_NYA_NYA # 55_tentukan NOTE_B1 62 # tentukan NOTE_C2 65 #tentukan NOTE_CS2 69 # tentukan NOTE_D2 73 # tentukan NOTE_DS2 78 # tentukan NOTE_E2 82 # tentukan NOTE_F2 87 # tentukan NOTE_FS2 93 # tentukan NOTE_G2 98 # tentukan NOTA_122kan_NYA_NET_NYA # 117_tentukan #Berminkan_123 #dapatkan_tanda #tentukan NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_FS3 185 # tentukan NOTE_G3 196 #define NOTE_dine_fine_dine_fine_fine_fine_fine_fine_fine_fine_foto2 NOTE_C4 262 # tentukan NOTE_CS4 277 # tentukan NOTE_D4 294 # tentukan NOTE_DS4 311 #tentukan NOTE_E4 330 # tentukan NOTE_F4 349 # tentukan NOTE_FS4 370 # tentukan NOTE_FS4 370 # tentukan NOTE_F44 370 # tentukan NOTE_G4 392 #tentukan #4_betulkan_4d4_tambah_4d4_tentukan_4b_4_4_4404_tentukan #d efine NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_8fine_fine_fine_fine_fine_fine_fine_fine_foto_foto_foto_foto_foto_foto_foto_foto_foto8 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 # tentukan NOTE_A6 1760 #definisikan_fine_fine_fine_fine_fine_fine_foto definisikan NOTE_D7 2349 # tentukan NOTE_DS7 2489 # tentukan NOTE_E7 2637 # tentukan NOTE_F7 2794 # tentukan NOTE_FS7 2960 # tentukan NOTE_G7 3136 # tentukan NOTE_GS7 3322 # tentukan NOTE_GS7 3322 # tentukan NOTE_A7 3520 # tentukan_Berminat_Berminat_Berminat #Berminat_Berminat #Berminat_Berminat #Berminat #Berminat_Berminat_Berminat 4699 #tentukan NOTE_DS8 4978

"#Definisi" ini untuk memberitahu pembicara frekuensi mana yang membuat nota

const int C = 2; const int D = 3; const int E = 4; const int F = 5; const int G = 6; const int A = 7; const int B = 8; const int C2 = 9; const int piezoPin = 10; int cState = 0; int dState = 0; int eState = 0; int fState = 0; int gState = 0; int aState = 0; int bState = 0; int c2State = 0;

Tentukan pin Arduino ke butang. "cState, dState, eState, dll;" adalah pemboleh ubah yang menyimpan sama ada butang ditekan. A 0 bermaksud ia tidak ditekan, 1 bermaksud ia ditekan.

batal persediaan () {// letakkan kod persediaan anda di sini, untuk dijalankan sekali: pinMode (10, OUTPUT); Serial.begin (9600); }

gelung kosong () {// letakkan kod utama anda di sini, untuk dijalankan berulang kali: cState = digitalRead (C); dState = digitalRead (D); eState = digitalRead (E); fState = digitalRead (F); gState = digitalRead (G); aState = digitalRead (A); bState = digitalRead (B); c2State = digitalRead (C2);

Keadaan butang (jika ditekan atau tidak) disimpan di "cState, dState, eState, dll;"

A 0 bermaksud ia tidak ditekan, 1 bermaksud ia ditekan.

jika (cState == 1) {tone (piezoPin, 131); } lain {noTone (piezoPin);} jika (dState == 1) {tone (piezoPin, 147); } lain {noTone (piezoPin);} jika (eState == 1) {tone (piezoPin, 165); } lain {noTone (piezoPin);} jika (fState == 1) {tone (piezoPin, 175); } lain {noTone (piezoPin);} if (gState == 1) {tone (piezoPin, 196); } lain {noTone (piezoPin);} jika (aState == 1) {tone (piezoPin, 220); } lain {noTone (piezoPin);} jika (bState == 1) {tone (piezoPin, 247); } lain {noTone (piezoPin);} jika (c2State == 1) {tone (piezoPin, 262); } lain {noTone (piezoPin);}}

Sekiranya butang ditekan, ia memberitahu servo untuk memainkan frekuensi sijil (nota). Fungsinya

{noTone (piezoPin);} memberitahu mereka bahawa jika butang tidak ditekan untuk memainkan apa-apa. Oleh itu apabila butang ditekan, ia akan memainkan nota yang ditentukan.

Disyorkan: