Chơi nhạc với Buzzer

Chơi nhạc với Buzzer.

Dùng UnoX để điều khiển Buzzer tạo ra những bản nhạc hấp dẫn.

Các linh kiện cần chuẩn bị

Giới thiệu về Buzzer

  • Buzzer hay còn gọi là còi chíp hoặc còi xung, là thiết bị phát ra âm thanh (tiếng bíp bíp) hay dùng trong các mạch điện tử.
  • Cấu tạo của Buzzer gồm 2 chân, chân dài là chân (+) và chân ngắn là chân (-). Trong quá trình sử dụng cần chú ý mắc đúng chân để tránh làm hỏng buzzer.
  • Ứng dụng này sử dụng Buzzer 5V, có khả năng phát ra âm thanh có tần số tối đa 2.5kHz.

Kết nối các thiết bị

Bảng kết nối Buzzer

UnoXBuzzer
Chân 8chân (+)
Chân GNDchân (-)

Lưu ý: Sử dụng thêm trở 100Ω để hạn dòng cho Buzzer.

Ý tưởng xây dựng chương trình.

  • Âm thanh được tạo ra ở buzzer bằng cách cho UnoX tạo ra những sóng điện có tần số và thời gian nhất định để truyền đến Buzzer.
  • Để tạo ra nhiều âm điệu, ta cần cung cấp nhiều tần số nhạc khác nhau, vì vậy, nên sử dụng 1 file để lưu tần số các nốt nhạc.
  • Thời gian phát ra sóng điện sẽ ảnh hưởng đến trường độ nốt nhac.

Code mẫu

  • Chúng ta cần tạo 1 file pitches.htrong thư mục chứa sketch để khai báo tần số từng nốt nhạc. Bạn có thể tải file pitches.h (tại đây) hoặc tạo file tên pitches.h và copy nội dung bên dưới vào.

  • Khởi tạo 2 mảng có chức năng như sau:

    • Mảng melody[] sẽ lưu các nốt của đoạn nhạc.
    • Mảng noteDurations[]sẽ lưu trường độ các nốt nhạc.
  • Chương trình sẽ phát ra âm điệu bằng hàm tone(pin, frequency, duration) với:

    • pin là chân kết nối với Buzzer (ở đây là chân số 8).
    • frequency là nốt nhạc mà bạn muốn phát.
    • duration là trường độ của nốt nhạc bạn muốn phát.
  • Định nghĩa trường độ các nốt nhạc được sử dụng ở project này trong file pitches.h

#define NOTE_G3  196
#define NOTE_A3  220
#define NOTE_B3  247
#define NOTE_C4  262
  • Sau khi đã tạo song file pitches.h, chúng ta sẽ viết chương trình
#include "pitches.h"
int speakerPin = 8;               //  Chân được nối với buzzer

/* danh sách các nốt nhạc */
int melody[] = {
  NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};

/* Trường độ phát nốt nhạc: 4 = 1/4 nốt nhạc, 8 = 1/8 nốt nhạc */
int noteDurations[] = {4, 8, 8, 4, 4, 4, 4, 4 };

void setup()
{
}

void loop()
{
  for ( int thisNote = 0; thisNote < 8; thisNote++ ) {
    /* 1 Nốt nhạc có chu kì là 1s
       1/4 nốt nhạc tương ứng thời gian phát = 1000/4=250ms
       1/8 nốt nhạc tương ứng thời gian phát = 1000/8=125ms
    */
    int noteDuration = 1000/noteDurations[thisNote];
    tone(speakerPin, melody[thisNote],noteDuration);

    //  Biến pauseBetweenNotes nhằm tạo độ trễ giúp phân biệt các nốt nhạc với nhau.
    int pauseBetweenNotes = noteDuration * 1.30;
    delay( pauseBetweenNotes );
    noTone( speakerPin ); //  Dừng phát nhạc.
  }
  delay(1000);
}

Kết quả

Sau khi nạp chương trình , chúng ta sẽ nghe được những giai điệu âm thanh tạo ra bởi Buzzer, các giai điệu này được lặp laị liên tục

Ứng dụng mở rộng

Tạo ra những bản nhạc theo tuy theo sở thích của mình.