Arduino
Làm đàn piano mini đơn giản
truongcongly.com
Giới thiệu
Trong bài viết này, chúng ta sẽ thực hiện một dự án Mini Piano Arduino . Để thực hiện dự án này, chúng tôi đang sử dụng loa nhỏ để thu được âm thanh đầu ra và mạch Arduino UNO .
Chúng ta có thể chơi các nốt khác nhau bằng cách nhấn các nút bấm. Trong này chỉ có 8 nút bấm nhưng bạn có thể mở rộng chúng tùy theo lựa chọn của mình.
Bảng Tần Số các nốt nhạc trên piano
| NỐT NHẠC (NOTE) | TẦN SỐ (HZ) |
|---|---|
| A0 | 27,5 |
| A#0 / Bb0 | 29.135 |
| B0 | 30.868 |
| C1 | 32,703 |
| C#1 / Db1 | 34.648 |
| D1 | 36,708 |
| D#1 / Eb1 | 38.890 |
| E1 | 41,203 |
| F1 | 43.653 |
| F#1 / Gb1 | 46.249 |
| G1 | 49 |
| G#1 / Ab1 | 51,913 |
| A1 | 55 |
| A#1 / Bb1 | 58.271 |
| B1 | 61,735 |
| C2 | 65.406 |
| C#2 / Db2 | 69.296 |
| D2 | 73.416 |
| D#2 / Eb2 | 77.781 |
| E2 | 82.407 |
| F2 | 87.307 |
| F#2 / Gb2 | 92.499 |
| G2 | 98 |
| G#2 / Ab2 | 103,83 |
| A2 | 110 |
| A#2 / Bb2 | 116,54 |
| B2 | 123.47 |
| C3 | 130,81 |
| C#3 / Db3 | 138,59 |
| D3 | 146,83 |
| D#3 / Eb3 | 155,56 |
| E3 | 164,81 |
| F3 | 174,61 |
| F#3 / Gb3 | 184.99 |
| G3 | 195,99 |
| G#3 / Ab3 | 207,65 |
| A3 | 220 |
| A#3 / Bb3 | 233.08 |
| B3 | 246,94 |
| C4 | 261,62 |
| C#4 / Db4 | 277,18 |
| D4 | 293,66 |
| D#4 / Eb4 | 311,12 |
| E4 | 329,62 |
| F4 | 349,22 |
| F#4 / Gb4 | 369,99 |
| G4 | 392,00 |
| G#4 / Ab4 | 415,3 |
| A4 | 440 |
| A#4 / Bb4 | 466,16 |
| B4 | 493,88 |
| C5 | 523,25 |
| C#5 / Db5 | 554,37 |
| D5 | 587,32 |
| D#5 / Eb5 | 622,25 |
| E5 | 659,26 |
| F5 | 698.45 |
| F#5 / Gb5 | 739,99 |
| G5 | 783,99 |
| G#5 / Ab5 | 830,61 |
| A5 | 880 |
| A#5 / Bb5 | 932,32 |
| B5 | 987,77 |
| C6 | 1046,5 |
| C#6 / Db6 | 1108,7 |
| D6 | 1174,7 |
| D#6 / Eb6 | 1244,5 |
| E6 | 1318,5 |
| F6 | 1396,9 |
| F#6 / Gb6 | 1480 |
| G6 | 1568 |
| G#6 / Ab6 | 1661,2 |
| A6 | 1760 |
| A#6 / Bb6 | 1864,7 |
| B6 | 1975,5 |
| C7 | 2093 |
| C#7 / Db7 | 2217,5 |
| D7 | 2349,3 |
| D#7 / Eb7 | 2489 |
| E7 | 2637 |
| F7 | 2793,8 |
| F#7 / Gb7 | 2960 |
| G7 | 3136 |
| G#7 / Ab7 | 3322.4 |
| A7 | 3520 |
| A#7 / Bb7 | 3729,3 |
| B7 | 3951,1 |
| C8 | 4186 |
Thành phần cần thiết
Sơ đồ kết nối
| Arduino UNO | Keypad | Speaker |
| 5V | VCC | |
| GND | GND | - |
| D11 | + | |
| D9 | Key 8 | |
| D8 | Key 7 | |
| D7 | Key 6 | |
| D6 | Key 5 | |
| D5 | Key 4 | |
| D4 | Key 3 | |
| D3 | Key 2 | |
| D2 | Key 1 |
Dự án Mini Piano Arduino hoạt động như thế nào?
- Dự án này sẽ tạo ra âm thanh có tần số cố định khi chúng ta nhấn nút ấn.
- Tần số được xác định trước cho tất cả các nút trong code.
- Sử dụng hàm tone(speakerPin, frequency) để tạo ra âm thanh có tần số mong muốn.
- Để tắt còi, Sử dụng hàm noTone(speakerPin).
Code
const int buttonPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Các chân kết nối nút nhấn
const int tones[] = {262, 294, 330, 349, 392, 440, 494, 523}; // Tần số các nốt nhạc (C4, D4, E4, F4, G4, A4, B4, C5)
const int speakerPin = 11;
void setup() {
Serial.begin(9600);
for (int i = 0; i < 8; i++) {
pinMode(buttonPins[i], INPUT_PULLUP); // Cấu hình các chân nút nhấn là đầu vào với điện trở kéo lên
}
pinMode(speakerPin, OUTPUT); // Cấu hình chân loa là đầu ra
}
void loop() {
for (int i = 0; i < 8; i++) {
while (digitalRead(buttonPins[i]) == LOW) { // Kiểm tra nếu nút nhấn được nhấn
tone(speakerPin, tones[i]); // Phát tần số tương ứng
Serial.println(tones[i]);
}
}
noTone(speakerPin); // Dừng phát tần số
Serial.print("");
}


Nhận xét