Sử dụng Bộ điều khiển có thể giúp bạn điều khiển và di chuyển rô-bốt để hoàn thành nhiệm vụ dễ dàng hơn. Tuy nhiên, có những hạn chế khi sử dụng chương trình Drive và tùy thuộc vào cấu trúc robot của bạn hoặc nhiệm vụ hiện tại, bạn có thể muốn có các điều khiển khác nhau. Việc mã hóa Bộ điều khiển cho phép bạn tối ưu hóa Bộ điều khiển để phù hợp hơn với rô-bốt và nhiệm vụ hiện tại của bạn. Có một số cách để mã hóa Bộ điều khiển trong VEXcode V5. Mỗi phương pháp đều có những ưu điểm và hạn chế, và một số phương pháp phù hợp hơn với những tình huống nhất định tùy thuộc vào kết quả mong muốn.
Bài viết này sẽ hướng dẫn bạn ba tùy chọn khác nhau để mã hóa tùy chỉnh Bộ điều khiển trong VEXcode V5. Mỗi phương pháp sẽ được mô tả với những ưu điểm, hạn chế và trường hợp sử dụng ví dụ để giúp hướng dẫn bạn khi chọn phương pháp. Vì mục đích của bài viết này, tất cả các ví dụ về mã được hiển thị đều được tạo cho Clawbot. Tuy nhiên, các khái niệm tương tự có thể được áp dụng cho nhiều bản dựng khác được tìm thấy trên build.vex.comvà các bản dựng tùy chỉnh.
Tùy chọn 1: Gán nút trong Cấu hình thiết bị
Tùy chọn này rất phù hợp khi bạn đang sử dụng bản dựng tiêu chuẩn, như Speedbot hoặc Clawbot và muốn thiết lập và chạy nhanh chóng.
Tùy chọn này cho phép bạn gán động cơ, hệ thống truyền động hoặc nhóm động cơ cho các nút trên Bộ điều khiển trong Cấu hình thiết bị. Để biết thêm thông tin về cách gán các nút cho Bộ điều khiển trong Cấu hình Thiết bị, hãy xem bài viết này.
Tóm tắt Phương án 1: Gán Nút trong Cấu hình Thiết bị
Thuận lợi |
Hạn chế |
Tình huống ví dụ |
|
|
|
Tùy chọn 2: Sử dụng Vòng lặp vĩnh viễn
Nếu bạn đang sử dụng bản dựng tùy chỉnh thay vì bản dựng tiêu chuẩn hoặc muốn có nhiều tùy chỉnh hơn trong Bộ điều khiển của mình thì tùy chọn này là một tùy chọn tốt. Sử dụng vòng lặp Forever là cách giới thiệu tuyệt vời để tạo mã tùy chỉnh cho Bộ điều khiển của bạn.
Tùy chọn này đặt tất cả các điều kiện cho Bộ điều khiển và các nút liên quan của nó vào vòng lặp Mãi mãi. Điều này mang lại sự linh hoạt hơn, đặc biệt là với các thiết kế xây dựng tùy chỉnh, nhưng cũng đòi hỏi một số kinh nghiệm viết mã. Tuy nhiên, một điều cần cân nhắc khi sử dụng tùy chọn này là độ dài và độ phức tạp của dự án của bạn. Càng thêm nhiều điều kiện thì ngăn xếp mã càng dài. Điều này có nghĩa là nhiều khối phải được thực thi theo thứ tự và khi có nhiều khối, điều này có thể làm chậm quá trình thực thi dự án. Việc thực hiện dự án chậm hơn có thể tạo ra độ trễ giữa việc nhấn các nút Bộ điều khiển và xem hành vi của rô-bốt.
Ví dụ cụ thể được hiển thị bên dưới là một cách mà bạn có thể sử dụng vòng lặp Forever với rô-bốt có thiết kế tùy chỉnh (chẳng hạn như rô-bốt có hệ thống truyền động tùy chỉnh) để điều khiển rô-bốt và điều khiển móng vuốt và cánh tay để tương tác với các vật thể.
Tải xuống tệp dự án VEXcode V5 "Tùy chọn 2" >
Giải thích về mã tùy chọn 2.
Đoạn mã |
Giải trình |
Một Clawbot đã được sử dụng cho ví dụ mã này. Khi sử dụng các nút trên Bộ điều khiển để nâng hạ cánh tay, ngay khi nhả nút ra, do trọng lực, cánh tay sẽ rơi ngược xuống. Đặt cả cánh tay và móng vuốt ở chế độ “giữ” sẽ đảm bảo rằng cả cánh tay và móng vuốt sẽ vẫn ở đúng vị trí ngay cả sau khi các nút trên Bộ điều khiển đã được nhả ra. |
|
Một Clawbot đã được sử dụng cho ví dụ mã này. Khi sử dụng các nút trên Bộ điều khiển để nâng hạ cánh tay, ngay khi nhả nút ra, do trọng lực, cánh tay sẽ rơi ngược xuống. Đặt cả cánh tay và móng vuốt ở chế độ “giữ” sẽ đảm bảo rằng cả cánh tay và móng vuốt sẽ vẫn ở đúng vị trí ngay cả sau khi các nút trên Bộ điều khiển đã được nhả ra. Vòng lặp Forever được sử dụng để liên tục kiểm tra xem nút nào đang được nhấn trên Bộ điều khiển. Các khối [Đặt tốc độ động cơ] được sử dụng để đặt tốc độ động cơ đến vị trí của Bộ điều khiển hiện tại dọc theo trục 2 và 3. Điều này tương đương với việc cài đặt một chiếc ô tô vào trạng thái lái. Điều đó không nhất thiết làm cho ô tô chuyển động, nó chỉ làm cho ô tô chuyển động. Mỗi trục cần điều khiển trả về một giá trị trong khoảng từ -100 đến +100 và trả về giá trị bằng 0 khi được căn giữa. Điều này có nghĩa là trục cần điều khiển, khi được đẩy, tương đương với -100% đến 100%. Trục được đẩy càng xa về phía 100 hoặc -100 thì động cơ sẽ quay càng nhanh. Khối [Spin] sau đó được sử dụng để di chuyển động cơ. Điều này tương đương với việc nhấn ga trên ô tô khi đã xác định được hướng đi. Điều này cho phép mỗi động cơ được điều khiển bởi một trong bốn trục Bộ điều khiển. |
|
Một Clawbot đã được sử dụng cho ví dụ mã này. Khi sử dụng các nút trên Bộ điều khiển để nâng hạ cánh tay, ngay khi nhả nút ra, do trọng lực, cánh tay sẽ rơi ngược xuống. Đặt cả cánh tay và móng vuốt ở chế độ “giữ” sẽ đảm bảo rằng cả cánh tay và móng vuốt sẽ vẫn ở đúng vị trí ngay cả sau khi các nút trên Bộ điều khiển đã được nhả ra. Khối [If then else if then else] được sử dụng để ánh xạ các hành vi nhất định tới các nút được nhấn hoặc nhả trên Bộ điều khiển. Trong phần mã này, các điều kiện được đặt là nếu nhấn nút Lên hoặc Xuống. Nếu vậy, một số hành vi nhất định sẽ xảy ra, chẳng hạn như giơ và hạ cánh tay. Ngoài ra còn có phần khác của điều kiện, nếu không nhấn nút nào, cánh tay sẽ ngừng di chuyển. Lưu ý phần mã sau đây trong dự án dành cho Móng vuốt cũng có lời giải thích tương tự. |
Tóm tắt phương án 2: Sử dụng vòng lặp vĩnh viễn
Thuận lợi |
Hạn chế |
Tình huống ví dụ |
|
|
|
Tùy chọn 3: Sử dụng Sự kiện
Nếu bạn muốn có nhiều tùy chỉnh cho Bộ điều khiển của mình, Sử dụng Sự kiện là lựa chọn tốt nhất cho bạn. Một lần nhấn nút có thể kích hoạt nhiều hành vi của robot, chẳng hạn như nhấn nút để mở càng, nâng cánh tay và lái về phía trước trong một khoảng cách đã đặt. Việc cố gắng mã hóa nhiều hành vi cho mỗi nút trong vòng lặp Mãi mãi sẽ khiến quá trình thực thi dự án chậm lại đáng kể – việc sử dụng Sự kiện cho phép bạn thực hiện việc này hiệu quả hơn.
Tùy chọn này sử dụng Sự kiện để chia nhỏ luồng dự án. Điều này tương tự như việc sử dụng vòng lặp Mãi mãi, nhưng cho phép mã được tổ chức chặt chẽ hơn để việc thực thi nút có thời gian phản hồi nhanh hơn. Thời gian phản hồi nhanh hơn có nghĩa là bạn sẽ không thấy độ trễ giữa việc nhấn các nút Bộ điều khiển và xem hành vi của robot. Ví dụ này hiển thị các hành vi tương tự như dự án trước, nhưng được thực hiện bằng cách sử dụng Sự kiện thay vì Vòng lặp vĩnh viễn.
Tải xuống tệp dự án VEXcode V5 "Tùy chọn 3" >
Giải thích về mã tùy chọn 3.
Đoạn mã |
Giải trình |
Một Clawbot đã được sử dụng cho ví dụ mã này. Khi sử dụng các nút trên Bộ điều khiển để nâng hạ cánh tay, ngay khi nhả nút ra, do trọng lực, cánh tay sẽ rơi ngược xuống. Đặt cả cánh tay và móng vuốt ở chế độ “giữ” sẽ đảm bảo rằng cả cánh tay và móng vuốt sẽ vẫn ở đúng vị trí ngay cả sau khi các nút trên Bộ điều khiển đã được nhả ra. |
|
Một Clawbot đã được sử dụng cho ví dụ mã này. Khi sử dụng các nút trên Bộ điều khiển để nâng hạ cánh tay, ngay khi nhả nút ra, do trọng lực, cánh tay sẽ rơi ngược xuống. Đặt cả cánh tay và móng vuốt ở chế độ “giữ” sẽ đảm bảo rằng cả cánh tay và móng vuốt sẽ vẫn ở đúng vị trí ngay cả sau khi các nút trên Bộ điều khiển đã được nhả ra. {When controller axis} Khối sự kiện được sử dụng để kích hoạt một số hành vi nhất định khi một trong bốn trục trên Bộ điều khiển được thay đổi bằng cách sử dụng cần điều khiển. Các khối [Đặt tốc độ động cơ] được sử dụng để đặt tốc độ động cơ đến vị trí của Bộ điều khiển hiện tại dọc theo trục A và D. Điều này tương đương với việc cài đặt một chiếc ô tô vào trạng thái lái. Điều đó không nhất thiết làm cho ô tô chuyển động, nó chỉ làm cho ô tô chuyển động. Mỗi trục cần điều khiển trả về một giá trị trong khoảng từ -100 đến +100 và trả về giá trị bằng 0 khi được căn giữa. Điều này có nghĩa là trục cần điều khiển, khi được đẩy, tương đương với -100% đến 100%. Trục được đẩy càng xa về phía 100 hoặc -100 thì động cơ sẽ quay càng nhanh. Khối [Spin] sau đó được sử dụng để di chuyển động cơ. Điều này tương đương với việc nhấn ga trên ô tô khi đã xác định được hướng đi. Điều này cho phép mỗi động cơ được điều khiển bởi một trong bốn trục Bộ điều khiển. |
|
Một Clawbot đã được sử dụng cho ví dụ mã này. Khi sử dụng các nút trên Bộ điều khiển để nâng hạ cánh tay, ngay khi nhả nút ra, do trọng lực, cánh tay sẽ rơi ngược xuống. Đặt cả cánh tay và móng vuốt ở chế độ “giữ” sẽ đảm bảo rằng cả cánh tay và móng vuốt sẽ vẫn ở đúng vị trí ngay cả sau khi các nút trên Bộ điều khiển đã được nhả ra. {When controller axis} Các khối sự kiện được sử dụng để ánh xạ các hành vi nhất định tới các nút được nhấn hoặc nhả trên Bộ điều khiển. Trong phần mã này, các điều kiện được đặt là nếu nhấn nút Lên hoặc Xuống. Nếu vậy, một số hành vi nhất định sẽ xảy ra, chẳng hạn như giơ tay lên, hạ xuống hoặc dừng lại. Lưu ý phần mã cuối cùng trong dự án dành cho Móng vuốt cũng có lời giải thích tương tự. |
Tóm tắt phương án 3: Sử dụng Sự kiện
Thuận lợi |
Hạn chế |
Tình huống ví dụ |
|
|
|