Có thể bạn chưa biết các thiết bị phát ra âm thanh chúng ta thường thấy trong nhiều loại máy móc, xe đồ chơi, điện thoại và nhiều thiết bị điện tử khác có tên là buzzer. Buzzer có 2 loại chính là: passive buzzer và active buzzer.
Buzzer cũng như trống hay các vật thể có thể phát ra âm thanh khác, đều dựa trên sự rung ở bề mặt để phát ra âm thanh.
Buzzer được tích hợp trên board Yolo:Bit là loại passive buzzer. Vị trí của buzzer trên Yolo:Bit như dưới đây:
Trong bài học này, chúng ta sẽ cùng tìm hiểu cách lập trình để Yolo:Bit phát ra các nốt nhạc theo ý muốn.
Để làm việc với buzzer (loa) trên Yolo:Bit, ta cần dùng thư viện music. Thư viện này hỗ trợ sẵn một số bài nhạc và hàm play giúp chúng ta phát các bài nhạc đó. Chỉ cần import thư viện và gọi hàm play với tham số là tên bài hát như dưới đây:
import music music.play(music.NYAN)
Danh sách các bài nhạc được hỗ trợ sẵn gồm có:
Hãy thử phát ra 1 vài bài hát khác và thưởng thức cùng với Yolo:Bit nhé! ^_^
Ngoài các bài hát có sẵn, bạn cũng có thể tự tạo ra bài hát bằng cách tạo ra một danh sách các nốt nhạc, tạo thành một bản nhạc. Các nốt nhạc được ký hiệu là các chữ cái, tương ứng với các nốt nhạc như sau: C – Đồ, D – Rê, E – Mi, F – Fa, G – Sol, A – La, B – Si, R – Dấu lặng.
Để tạo thành một bài nhạc hoàn chỉnh, chúng ta sẽ cần sử dụng các nốt nhạc với cao độ (độ cao của nốt nhạc) và trường độ (độ dài mà nốt nhạc phát ra) khác nhau. Khi lập trình với Yolo:Bit, đi kèm kí hiệu nốt nhạc, ta cần lưu ý 2 giá trị:
Kí hiệu một nốt nhạc đầy đủ được viết theo cú pháp: “NOTE[octave]:[duration]”, ví dụ “C4:4”, “D4:4”, “A4:4”,…
Để có thể tạo ra một bài hát và phát bài hát đó với Yolo:Bit, ta cần tạo ra bản nhạc bằng cách tạo một danh sách gồm các nốt nhạc (tương tự như danh sách các các hình ảnh ở bài trước)., sau đó dùng hàm play phát bản nhạc đó, cụ thể như dưới đây, nạp chương trình và thử xem nhé.
import music tune = ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4", "D4:4", "E4:4", "C4:4", "E4:4", "F4:4", "G4:8", "E4:4", "F4:4", "G4:8"] music.play(tune)
Không chỉ phát ra các nốt nhạc, thư viện music của MicroPython trên Yolo:Bit còn có thể phát ra các âm thanh ở các tần số khác nhau, giúp chúng ta phát ra được những hiệu ứng âm thanh theo ý muốn.
Ví dụ nếu ta muốn phát ra âm thanh hú còi báo động giống của cảnh sát:
import music while True: for freq in range(880, 1760, 16): music.pitch(freq, 100) for freq in range(1760, 880, -16): music.pitch(freq, 100)
Hàm music.pitch() nhận đầu vào là tần số của âm thanh cần phát và độ dài.
Trong chương trình trên, ta dùng hàm range() của MicroPython để tạo ra một danh sách các tần số theo thông tin truyền vào. Hàm này nhận 3 thông tin truyền vào là số bắt đầu, số kết thúc và giá trị mỗi lần tăng hoặc giảm (nếu là số âm).
Câu lệnh range(880, 1760, 16) ý nghĩa là yêu cầu MicroPython tạo ra một dãy các số bắt đầu từ 880 và kết thúc ở 1760 với bước nhảy là 16.
Sau khi tạo ra dãy số, chúng ta dùng vòng lặp for để lặp qua từng con số trong dãy số được tạo ra và dùng hàm music.pitch để phát ra âm thanh có tần số bằng với số đang được lặp qua trong dãy số đó.
Làm việc với âm nhạc trong Yolo:Bit thật dễ dàng đúng không nào!! 😀