Bài 10: Đàn Piano trái cây - MakerEdu Inventor Kit for Micro:bit
Mô tả dự án
Trong bài này bạn sẽ sử dụng lá cây để làm các phím đàn, kết hợp với "còi báo" tích hợp sẵn trên mạch Micro:bit để là một chiếc đàn piano mini.
... hình thumnail
Các bước thực hiện
Danh sách thiết bị
- 1x Cáp MicroUSB.
- 1x Bo mạch Micro:Bit.
- 4x Dây kẹp cá sấu
Chuẩn bị trước dự án
- Tham khảo: Cách kết nối và nạp chương trình cho mạch Micro:bit trên máy tính với phần mềm MakeCode - MakerLab Wiki.
Các bước thực hiện
- 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] để tiến hành nhanh hơn.
- Nạp chương trình vào Micro:Bit.
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ả
...
... hình dự án