Bài 12: Phát Nhạc Bằng Arduino Với Một Cái Loa Hoặc Buzzer
Có thể bạn quan tâm
Nội dung chính, cần nắm
Với Arduino, bạn có thể phát ra được nhạc. Nhạc được phát ra dưới dạng các sóng có tần số khác nhau, chúng tôi đã tập hợp các tần số dưới dạng tên các nốt nhạc. Và qua ví dụ này, bận sẽ biết cách phát nhạc từ Arduino và làm ra nhạc cho Arduino!
Phần cứng
- Arduino Uno
- 1 x Loa (bạn có thể lấy từ thùng loa cũ hoặc từ đồ chơi có nhạc, loại nào cũng được) hoặc 1 buzzer (mua ngoài tiệm khoảng 5k)
- 1 điện trở 100 ohm
Lắp mạch

Giải thích và lập trình
Đoạn code sau đây bao gồm thêm một file khác tên là pitch.h, tập tin này bao gồm một số ghi chú nhất định mà bạn thường sử dụng. Nó rất hữu ích cho việc sử dụng tạo nhạc sau này. Để tạo ra file mới, kích vào nút "New Tab"
. Bạn hãy kích vào nút đó và tạo một file mới tên pitch.h có nội dung như sau:
Bây giờ trong file chính, bạn dán đoạn code sau, trong code đã có hướng dẫn rất cụ thể, bạn tham khảo nhé!
#include "pitch.h" int speakerPin = 12;//Chân được nối với loa hoặc 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}; // thời gina các nốt nhạc: 4 = 1/4 nốt nhạc, 8 = 1/8nốt nhạc, ...: int noteDurations[] = { 4, 8, 8, 4,4,4,4,4 }; void setup() { //không cần phải pinMode cho speakerPin for (int thisNote = 0; thisNote < 8; thisNote++) { // bây giờ ta đặt một nốt nhạc là 1 giây = 1000 mili giây // thì ta chia cho các thành phần noteDurations thì sẽ // được thời gian chơi các nốt nhạc // ví dụ: 4 => 1000/4; 8 ==> 1000/8 int noteDuration = 1000/noteDurations[thisNote]; tone(speakerPin, melody[thisNote],noteDuration); // để phân biệt các nốt nhạc hãy delay giữa các nốt nhạc // một khoảng thời gian vừa phải. Ví dụ sau đây thực hiện tốt // điều đó: Ta sẽ cộng 30% và thời lượng của một nốt int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); //Ngừng phát nhạc để sau đó chơi nhạc tiếp! noTone(speakerPin); } } void loop() { //không cần thiết phải thực hiện lệnh gì ở đây. // Bạn dán đoạn code ở void setup xuống thì đoạn nhạc // sẽ được lặp liên tục ==> đau đầu! }Phần quan trọng nhất, chuyển một file mp3 thành danh sách các nốt nhạc có thể chạy được trên Arduino
Nếu bạn dùng MacOS thì bạn dùng iTunes, nếu dùng Windows thì bạn dùng phần mềm winLAME, còn nếu dùng Linux thì bạn dùng các phần mềm tương tự để encode lại MP3, ngoài ra bạn có thể dùng các phần mềm khác tương tự, bằng cách tìm kiếm với từ khóa, MP3 encoder software.
Bạn chỉ cần làm theo các bước sau để có thể làm được một bài nhạc trên Arduino.
- File âm thanh phải là một file MP3, nên bạn hãy chuyển nó về MP3 trước khi làm các bước tiếp theo. Bạn có thể download một file mp3 để test chẳng hạn như file này.
- Sau đó bạn dùng phần mềm MP3 encoder mà bạn vừa tải về chọn file MP3 mà bạn muốn encode rồi encode với các thông số sau (với winLAME bạn chọn mục Custom settings tại bảng Preset nhé):
- Bit rate = 8 hoặc 16
- Mono encoding
- Bây giờ bạn cần tải về thư viện PCM (bạn tải về sau đó giải nén vào thư mục libraries trong thư mục cài đặt phần mềm lập trình Arduino)
- Trong Arduino IDE bạn chọn, File / Example / PCM / playback
- Gắn chân dương của loa vào chân digital 11 (lưu ý chỉ mỗi chân này hoạt động được thôi nhé)
- Bạn download phần mềm EncodeAudio để chuyển file mp3 vừa được encode này thành những con số dùng cho chương trình Arduino
- Dành cho Windows
- Dành cho MacOS
- Dành cho Linux
- Bạn mở chương trình EncodeAudio lên rồi tìm đến file MP3 mà bạn đã encode. Đợi đến khi nhận được thông báo như thế này là được!
- Bây giờ bạn chỉ cần vào thay toàn bộ đoạn trong code bên trong mảng const unsigned char sample[] PROGMEM = { là ok. Bạn bôi đen hết rồi nhấn Ctrl + V là xong!
- Upload và thưởng thức thôi! Nếu sketch quá lớn thì bạn xóa bớt vài số cuối trong mảng là đươc. Bạn có thể download ngay bản thử nghiệm tại đây!
Từ khóa » Phát âm Thanh Bằng Arduino
-
âm Thanh | Cộng đồng Arduino Việt Nam
-
Arduino | Phát âm Thanh Bằng DFPlayer Mini + PAM8403 - YouTube
-
Bài 6: Tạo âm Thanh (Còi) Bằng Arduino
-
Bài 10. Tạo âm Thanh - OpenBuilds Vietnam
-
Phát Tập Tin định Dạng Wav Sử Dụng Mạch Arduino - Tự Tay Làm
-
Bài 6: Tạo âm Thanh (Còi) Bằng Arduino
-
Hướng Dẫn Sử Dụng Module Cảm Biến âm Thanh Với Arduino
-
KY-037 Mô-đun Cảm Biến Phát Hiện âm Thanh Bằng Giọng Nói Micrô ...
-
Module Phát Nhạc Từ Thẻ Nhớ TF Cho Arduino | Shopee Việt Nam
-
KY-037 Mô-đun Cảm Biến Phát Hiện âm Thanh Bằng Giọng ... - Shopee
-
Mạch MP3 Mini Điều Khiển Phát Nhạc Tương Thích Arduino Uno R3
-
Cảm Biến âm Thanh Arduino - Linh Kiện Mạch Điện
-
Mạch Phát âm Thanh MP3 WAV Giao Tiếp UART YX6300
-
Âm Thanh Giao Tiếp Arduino, Cảm Biến Vỗ Tay + Relay Bật đèn + ...
