Mục lục:

Piano Arduino: 3 bước
Piano Arduino: 3 bước

Video: Piano Arduino: 3 bước

Video: Piano Arduino: 3 bước
Video: #204 - How to make arduino piano 2024, Tháng mười một
Anonim
Piano Arduino
Piano Arduino

"Piano" này có thể chơi một quãng tám của một cây đàn piano thực sự. Việc nhấn các nút sẽ đại diện cho việc nhấn một phím trên đàn piano. Âm thanh sẽ được chuyển tiếp qua loa Piezo.

Bước 1: Vật liệu

1. Arduino Uno

2. dây USB

3. 3 breadboards

4. 8 nút bấm

5. 8 điện trở 100 Ohm

6. Loa "Piezo"

7. Nhiều dây đực (Khoảng 20)

8. Sắt hàn

Bước 2: Xây dựng thiết lập

Xây dựng thiết lập
Xây dựng thiết lập

Xây dựng 8 nút với mỗi nút đi vào 8 chân khác nhau trong Arduino, thêm điện trở vào mỗi nút và kết nối chúng với đất (sử dụng dây Nam).

Kết nối loa với chân Arduino được chỉ định và đầu còn lại với mặt đất. Bạn sẽ phải hàn dây vào loa để nó không bị rơi ra. Đảm bảo hai dây được hàn vào loa không chạm vào nhau.

Bước 3: Xây dựng mã

#define NOTE_B0 31 # define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 NOTE_B2 104 #define NOTE_A2 110 #define NOTE 117 #define 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_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_B3 247 NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 4405 #define NOTE4 49 NOTE_A4 4405 #NS 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_GS5 831 #define NOTE_A5 880 NOTE 9476 NOTE_ASfine NOTE 9 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 #define NOTE_A6 1760 #define NOTE_AS6 1865 #177 #define NOTE_AS6 1865 #177define NOTE 22CS xác định NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_Ca 4699 #define NOTE_DS8 4978

Các "#defines" này dùng để cho người nói biết tần số nào tạo ra nốt nào

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;

Chỉ định các chân Arduino cho các nút. "cState, dState, eState, v.v.;" là các biến lưu xem nút có được nhấn hay không. Số 0 có nghĩa là nó không được nhấn, số 1 có nghĩa là nó được nhấn.

void setup () {// đặt mã thiết lập của bạn ở đây, để chạy một lần: pinMode (10, OUTPUT); Serial.begin (9600); }

void loop () {// đặt mã chính của bạn ở đây, để chạy lặp lại: cState = digitalRead (C); dState = digitalRead (D); eState = digitalRead (E); fState = digitalRead (F); gState = digitalRead (G); aState = digitalRead (A); bState = digitalRead (B); c2State = digitalRead (C2);

Trạng thái của nút (nếu nó được nhấn hoặc không) được lưu trong "cState, dState, eState, v.v.;"

Số 0 có nghĩa là nó không được nhấn, số 1 có nghĩa là nó được nhấn.

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

Nếu một nút được nhấn, nó sẽ thông báo cho servo phát tần số xác nhận (lưu ý). Chức năng

{noTone (piezoPin);} cho họ biết rằng nếu nút không được nhấn sẽ không phát gì cả. Do đó, bất cứ khi nào nút được nhấn, nó sẽ phát nốt được chỉ định.

Đề xuất: