Dự án 03: Ngăn kéo chống trộm - MakerEdu Inventor Kit for Micro:bit

From MakerLab Wiki
Jump to navigation Jump to search

Mức độ: Dễ ★★☆☆☆☆☆☆☆

Danh sách thiết bị

Sơ đồ kết nối

MakerEDU Shield Thiết bị
Port P0 [MKE-S03] - Photo Diode

Mô tả dự án

Trong dự án này, mình chia làm 2 phần.

  • Phần 1:
    _ Đầu tiên bạn sẽ học cách đọc và phân tích giá trị Analog từ cảm biến ánh sáng (Photo Diode).
    _ Và dùng những thông số đó làm ứng dụng ngăn kéo chống trộm.
  • Phần 2:
    _ Dựa trên nguyên lý khi đóng ngăn kéo, bên trong sẽ rất tối do không có ánh sáng lọt vào.
    _ Và chỉ khi mở ngăn kéo ra, micro:bit phát hiện có ánh sáng mới bật còi báo.

Các bước thực hiện (Phần 1)

Tạo code

  1. Vào [Variables] nhấp Make a Variable và tạo một biến có tên "valueLight".
    → Biến này để bạn lưu trữ giá trị Analog đọc từ cảm biến ánh sáng.
  2. Vào [Basic] thêm khối forever
    → Đây là khối vòng lặp, các khối con bên trong khối này được thực hiện tuần tự từ trên xuống, và cứ thế lặp lại.
  3. Vào [Variables] thêm khối set valueLight to 0 và vào [Pins] thêm khối analog read pin P0 đặt vào vị trí số 0 của khối trước.
    → Khối này lưu giá trị Analog đọc từ cảm biến lưu vào trong biến "valueLight".
  4. Vào [Serial] thêm khối serial write line " " và vào [Variables] thêm khối valueLight đặt vào vị trí " " của khối trước.
    → Khối này gửi giá trị trong biến "valueLight" lên máy tính.
Icon-Info-White.png Tip:
Các khối của [Pins][Serial] bạn có thể tìm thấy trong mục Advanced.

Blocks

MakeCode Kit 3a.png

Javascript

let valueLight = 0

basic.forever(function () {
    valueLight = pins.analogReadPin(AnalogPin.P0)
    serial.writeLine("" + (valueLight))
})

Nạp code

  1. Kết nối [MKE-S03] - Photo Diode đến Port P0 của MakerEdu Shield.
  2. Nhấp vào Download để nạp code của bạn sang micro:bit.
  3. Xong nhấp vào Show data Device để xem giá trị trả về trên máy tính khi bạn thay đổi môi trường ánh sáng quanh cảm biến.

... hình data mẫu trên show data device

Icon-Done-White.png Giải thích:
Bo micro:bit có thể đọc giá trị Analog với độ phân giải 10 bit, nên giá trị trả về chỉ trong khoảng từ 0 đến 1023.

Bạn sẽ thấy khi trời càng tối giá trị tăng cao tiến về 1023, và ngược lại khi trời càng sáng giá trị giảm dần về 0.

Các bước thực hiện (Phần 2)

Tạo code

Sau khi thực nghiệm nhiều lần, mình quyết định chọn giá trị 1000 làm ngưỡng phát hiện sáng và tối cho cảm biến.

  • Tiếp tục, vào [Logic] thêm khối if true then và thêm khối 0 < 0 đặt vào vị trí true của khối trước.
  • Tiếp vào [Variables] thêm khối valueLight đặt vào để tạo thành biểu thức valueLight < 1000.
  • Rồi vào [Music] thêm khối play sound ... until done và thiết kế tiếng còi báo bạn muốn.

→ Khối này được thực hiện khi biến "valueLight" nhỏ hơn 1000.

Blocks

MakeCode Kit 3b.png

Javascript

let valueLight = 0

basic.forever(function () {
    valueLight = pins.analogReadPin(AnalogPin.P0)
    serial.writeLine("" + (valueLight))

    if (valueLight < 1000) {
        music.playSoundEffect(music.createSoundEffect(WaveShape.Square, 1600, 1, 255, 0, 300, SoundExpressionEffect.None, InterpolationCurve.Curve), SoundExpressionPlayMode.UntilDone)
    }
})

Nạp code

  1. Nhấp vào Download để nạp code của bạn sang micro:bit.
  2. Lắp đặt bộ này vào ngăn tủ kéo rồi đóng mở xem thử kết quả.

Kết quả

... hình dự án