Hướng dẫn Arduino: Làm đàn piano mini

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("");
}

Video

Nhận xét

Mới hơn Cũ hơn