Bài 6: Đàn Piano lá cây - Micro:bit V2 Go with Clips
Mô tả dự án
... hình thumnail dự án
Ở những bài trước, chúng ta đã làm quen cách sử dụng với các thiết bị tích hợp có sẵn trên bo mạch micro:Bit. Tuy nhiên, đây chưa phải là giới hạn của bo mạch này. Bạn còn có thể làm nhiều hơn thế nữa.
Trên bo mạch của micro:Bit, bạn sẽ thấy một dãy các chân mạ đồng như hình. (chèn hình)
Đây là những chân điều khiển của bo mạch micro:Bit được đưa ra ngoài để người sử dụng dễ kết nối bo mạch đến các thiết bị ngoại vi khác bên ngoài bo. Từ đây bạn có thể lập trình để sử dụng thêm với các thiết bị bên ngoài.
Ở bài này, mình sẽ hướng dẫn các bạn cách lập trình tạo ra một cây đàn piano nhỏ có thể phát ra 7 note nhạc cơ bản: Đồ - Rê - Mi - Fa - Sol - La - Si. Điều đặc biệt là chúng ta sẽ sử dụng các lá cây để làm phím đàn.
Các bước thực hiện
Danh sách thiết bị
- 1x Bo mạch Micro:Bit.
- 1x Cáp microUSB.
- 3x Dây kẹp cá sấu.
Chuẩn bị trước dự án
- Vào trình duyệt web bất kỳ và mở phần mềm MakeCode theo hướng dẫn tại đây.
- Kết nối mạch micro:Bit với máy tính qua cáp microUSB sẽ thấy đèn nguồn (LED đỏ) trên mạch phát sáng.
... hình kết nối mạch micro:bit với máy tính
Chương trình
- Tạo một dự án mới trong phần mềm MakeCode.
- Bạn có thể lập trình kéo thả từng mã khối theo hình dưới trong mục [Blocks].
- Hoặc copy đoạn code dưới và paste vào mục [JavaScript] để nhanh hơn.
- Để tiến hành nạp chương trình vào micro:Bit, các bạn làm theo hướng dẫn tại đây.
Blocks
Javascript
// Khối "Button 0" - do người dùng tạo function Button_0() { if (input.pinIsPressed(TouchPin.P0)) { line0 = 0 } else { line0 = 1 } } // Khối "Button 1" - do người dùng tạo function Button_1() { if (input.pinIsPressed(TouchPin.P1)) { line1 = 0 } else { line1 = 1 } } // Khối "Button 2" - do người dùng tạo function Button_2() { if (input.pinIsPressed(TouchPin.P2)) { line2 = 0 } else { line2 = 1 } } // Khối "play music notes" - do người dùng tạo function play_music_notes() { if (line2 && (line1 && !(line0))) { music.ringTone(262) } else if (line2 && (!(line1) && line0)) { music.ringTone(294) } else if (line2 && (!(line1) && !(line0))) { music.ringTone(330) } else if (!(line2) && (line1 && line0)) { music.ringTone(349) } else if (!(line2) && (line1 && !(line0))) { music.ringTone(392) } else if (!(line2) && (!(line1) && line0)) { music.ringTone(440) } else if (!(line2) && (!(line1) && !(line0))) { music.ringTone(494) } else { music.stopAllSounds() } } // Khai báo các biến let line2 = 0 let line1 = 0 let line0 = 0 // Khối "on start" - thực hiện 1 lần khi khởi động music.setVolume(255) basic.showIcon(IconNames.EighthNote) // Khối "forever" - vòng lặp chính của chương trình basic.forever(function () { Button_0() Button_1() Button_2() play_music_notes() })
Giải thích code
Chương trình hoạt động:
Trong khối [ on start ].
- Đầu tiên bo mạch sẽ bật âm lượng còi lên mức cao nhất qua khối [ set volume "255" ].
- Và cho hiển thị kí hiệu 🎼.
Phần khởi động này để chúng ta biết chương trình đã sẵn sàng.
Trong khối [ forever ].
- Thực hiện lệnh gọi tuần tự các khối do người dùng tạo.
- Đầu tiên là khối "Button_0", đến "Button_1", "Button_2".
- Cuối cùng là khối "play_music_notes" và cứ thế lặp lại.
Vai trò của nhóm các khối [ function "Button_..." ]:
Trong khối "Button_0".
- Đọc giá trị Digital từ chân
P0
. - Nếu phát hiện chân đang được nhấn, hay chạm → biến "line0" được đặt thành
0
. - Ngược lại, biến "line0" đặt thành
1
.
Chức năng này cũng tương tự với các khối "Button_1" cho chân P1
và "Button_2" cho chân P2
.
Chân | Biến | Đang nhấn | Không nhấn |
---|---|---|---|
P0
|
line0 | 0 | 1 |
P1
|
line1 | 0 | 1 |
P2
|
line2 | 0 | 1 |
Vai trò của khối [ function "play_music_notes" ]:
Dựa theo giá trị hiện tại của các biến "line0", "line1", "line2" chương trình sẽ ra quyết định.
- Phát ra note nhạc nào bằng khối [ ring tone (Hz)... ].
- Hoặc dừng phát nhạc bằng khối [ stop all sounds ].
line0 | line1 | line2 | Còi |
---|---|---|---|
nhấn | . | . | Đồ - [ C ] |
. | nhấn | . | Rê - [ D ] |
nhấn | . | . | Mi - [ E ] |
. | nhấn | nhấn | Fa - [ F ] |
nhấn | nhấn | . | Sol - [ G ] |
nhấn | . | nhấn | La - [ A ] |
nhấn | nhấn | nhấn | Si - [ B ] |
. | . | . | Dừng phát nhạc |
Kết quả
Chạm thử vào từng lá cây và nghe thử xem đó là note gì nhé. Bạn có thể lập trình thêm cho màn hình LED hiển thị tên note nhạc đang phát đấy.
... hình dự án
Để thao tác đàn nhạc dễ hơn, bạn có thể làm một cây đàn piano giấy của riêng mình theo cách này.
... video dự án (https://www.youtube.com/watch?v=6a_rykLlN3k&ab_channel=Tam%C3%A1sF%C3%BCl%C3%B6p)