Bài 6: Cổng tự động - MakerEdu Inventor Kit for Micro:bit
Jump to navigation
Jump to search
Mô tả dự án
Trong bài này bạn sẽ được cách sử dụng "cảm biến siêu âm" kết hợp với "động cơ Servo" để làm ứng dụng cổng tự động mở cửa khi có ai đó đến gần cửa.
... 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.
- 1x MakerEdu Shield for micro:bit
- 1x [MKE-S01] - Cảm biến Siêu âm
- 1x Động cơ RC Servo.
Sơ đồ kết nối
MakerEDU Shield | Thiết bị |
---|---|
Port P2+P8 | [MKE-S01] - Siêu âm |
Port P0 | Động cơ RC Servo |
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.
Chú ý: Dự án có sử dụng khối [S01] cho cảm biến Siêu âm, bạn cần cài đặt thêm Extension "MakerEdu_Hardware" vào dự án của mình theo bài hướng dẫn này (nếu chưa có). |
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
// Khai báo các biến let distance = 0 // Khối "on start" - thực hiện 1 lần khi khởi động basic.showIcon(IconNames.Happy) basic.pause(1000) basic.clearScreen() // Khối "forever" - vòng lặp chính của chương trình basic.forever(function () { distance = ultraSonic.readDistance(ultraSonic.PingUnit.Centimeters, ultraSonic.PinKit.Port2) distance = Math.constrain(distance, 0, 50) if (distance <= 20) { basic.showIcon(IconNames.Yes) pins.servoWritePin(AnalogPin.P0, 180) } else if (distance >= 30) { basic.showIcon(IconNames.No) pins.servoWritePin(AnalogPin.P0, 0) } })
Giải thích code
Chương trình sẽ hoạt động như sau:
Trong khối [ on start ]:
- Micro:bit hiển thị "mặt cười" trong 1 giây rồi tắt.
Phần khởi động này nói cho chúng ta biết Micro:bit đã sẵn sàng.
Trong khối [ forever ]:
- Dùng khối [ S01 UltraSonic Distance | Read distance... ] để lấy giá trị khoảng cách (cm) từ cảm biến Siêu âm đang kết nối, để lưu vào biến "distance".
- Dùng khối [ constrain... ] để lọc giá trị trong biến "distance" đảm bảo kết quả chỉ nằm trong khoảng "từ 0cm đến 50cm".
- Sau đó kiểm tra, nếu
distance ≤ 20
thì màn hình Led hiển thị dấu (✔) và điều khiển chânP0
đang kết nối Servo đến góc 180º để mở cửa. - Không thì cho kiểm trả tiếp, nếu
distance ≥ 30
thì màn hình Led hiển thị dấu (✘) và điều khiển Servo đến góc 0º để đóng cửa lại.
Kết quả
...
... hình dự án