Bài 6: Đàn Piano lá cây - Micro:bit V2 Go with Clips

From MakerLab Wiki
Jump to navigation Jump to search

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

  1. Tạo một dự án mới trong phần mềm MakeCode.
  2. 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].
  3. Hoặc copy đoạn code dưới và paste vào mục [JavaScript] để nhanh hơn.
  4. Để 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

Microbit V2 Go Bai 6.png

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 ].

  1. Đầ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" ].
  2. 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"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)

Tài liệu tham khảo