Dự án 06: Đèn giao thông - MakerEdu Inventor Kit for Micro:bit

From MakerLab Wiki
Jump to navigation Jump to search

Mức độ: Trung bình ★★★★☆☆☆☆☆

Danh sách thiết bị

Sơ đồ kết nối

MakerEDU Shield Thiết bị
Port P0 [MKE-M01] - LED Xanh lá
Port P1 [MKE-M01] - LED Vàng
Port P2 [MKE-M01] - LED Đỏ

Mô tả dự án

Trong dự án này, các bạn sẽ làm được một bộ đèn giao thông, mình chia ra làm 3 giai đoạn.

  • Giai đoạn 1:
    _ Tạo 1 hàm có chức năng đếm ngược số hiển thị trên Led Matrix.
  • Giai đoạn 2:
    _ Tạo 1 hàm có chức năng điều khiển cùng lúc cả 3 đèn LED.
  • Giai đoạn 3:
    _ Sử dụng 2 hàm trên để làm thành một bộ đèn giao thông hoàn chỉnh.

Các bước thực hiện (Giai đoạn 1)

Tạo code

  1. Tạo biến có tên "count".
    → Biến "count" để hiển thị số đếm ngược lên Led Matrix.
  2. Tạo 1 hàm có tên "wait_second".
    Chọn thẻ Number, đặt tên biến là "num", xong bấm nút Done.
  3. Trong vùng code, bạn tạo chức năng cho khối function wait_second như hình dưới.
    → Khối này khi nhận một giá trị, sẽ cho hiển thị số đó lên Led Matrix, đợi 1s rồi giảm số đó đi 1 đơn vị và cứ lặp lại cho đến khi số đó về 1.

Blocks

MakeCode Kit 6a.png

Javascript

let count = 0

function wait_second(num: number) {
  count = num
  for (let index = 0; index < num; index++) {
    basic.showNumber(count)
    basic.pause(1000)
    count += -1
  }
}

Các bước thực hiện (Giai đoạn 2)

Tạo code

  1. Tạo 1 hàm có tên "light_GYR" (G viết tắt của "Green", Y"Yellow"R"Red").
    Chọn thẻ Number, tạo 3 biến với tên lần lượt là "ledGreen" - "ledYellow" - "ledRed", xong bấm nút Done.
  2. Trong vùng code, bạn tạo chức năng cho khối function light_GYR như hình dưới.
    → Khối này nhận giá trị điều khiển cho cả 3 đèn LED cùng lúc theo thứ tự màu Green - Yellow - Red.

Blocks

MakeCode Kit 6b.png

Javascript

function light_GYR(ledGreen: number, ledYellow: number, ledRed: number) {
  pins.digitalWritePin(DigitalPin.P0, ledGreen)
  pins.digitalWritePin(DigitalPin.P1, ledYellow)
  pins.digitalWritePin(DigitalPin.P2, ledRed)
}

Các bước thực hiện (Giai đoạn 3)

Tạo code

  1. Tạo 1 khối forever như hình dưới. Trong đó khối call wait_second và khối call light_GYR lấy trong [Functions].
    → Khối này điều khiển bật tắt tuần tự từng đèn giao thông và hiển thị thời gian đếm ngược của mỗi đèn trên Led Matrix.
Icon-Done-White.png Giải thích:
Ở hàm call light_GYR với tham số đặt giá trị 1 tương ứng "bật" LED và giá trị 0 tương ứng là "tắt" LED. Với chuỗi tham số:
  • [ 1 0 0 ] = bật LED Xanh lá, tắt LED Vàng, tắt LED Đỏ.
  • [ 0 1 0 ] = tắt LED Xanh lá, bật LED Vàng, tắt LED Đỏ.
  • [ 0 0 1 ] = tắt LED Xanh lá, tắt LED Vàng, bật LED Đỏ.

Hàm call wait_second cho dừng lại bằng khoảng thời gian đếm ngược. Cụ thể, trong dự án này, mình đặt LED Xanh lá sáng trong 3s, LED Vàng sáng trong 2s, và LED Đỏ sáng trong 5s.

Blocks

MakeCode Kit 6c.png

Javascript

basic.forever(function () {
  light_GYR(1, 0, 0)
  wait_second(3)
  light_GYR(0, 1, 0)
  wait_second(2)
  light_GYR(0, 0, 1)
  wait_second(5)
})

Nạp code

  1. Kết nối [MKE-M01] - LED Xanh lá đến Port P0 của MakerEdu Shield.
  2. Kết nối [MKE-M01] - LED Vàng đến Port P1 của MakerEdu Shield.
  3. Kết nối [MKE-M01] - LED Đỏ đến Port P2 của MakerEdu Shield.
  4. Nhấp vào Download để nạp code của bạn sang micro:bit.

Kết quả

... hình dự án