Skip to main content

Lập trình Claw - C++

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Phác thảo hoạt động

  • Khám phá này sẽ giới thiệu cho sinh viên về cách lập trình cơ bản cho Động cơ móng vuốt của V5 Clawbot.

  • Học cách lập trình Claw Motor cho phép học sinh kiểm soát chính xác cách V5 Clawbot cầm nắm các vật thể trong môi trường của nó.

V5 Clawbot đã sẵn sàng để bạn cầm nắm!

Khám phá này sẽ cho phép bạn bắt đầu tạo ra một số dự án thú vị sử dụng móng vuốt của V5 Clawbot để cầm nắm các vật thể.

  • Hướng dẫn VEXcode V5 sẽ được sử dụng trong quá trình khám phá này bao gồm:
    • ClawMotor.setPosition(0, độ);
    • ClawMotor.spinFor(hướng về phía trước, 90, độ);
    • ClawMotor.setTimeout (2, giây);
  • Để tìm hiểu thêm thông tin về hướng dẫn, hãy chọn Trợ giúp rồi chọn biểu tượng dấu chấm hỏi bên cạnh lệnh để xem thêm thông tin.

    VEXcode V5 với ổ đĩa để nhập lệnh trong không gian làm việc và Trợ giúp cho lệnh đó mở ở bên phải. Phần Trợ giúp định nghĩa lệnh và cung cấp thông tin về cách sử dụng lệnh đó.

  • Hãy đảm bảo rằng bạn đã tải xuống và sẵn sàng phần cứng cần thiết, sổ tay kỹ thuật và VEXcode V5.
Vật liệu cần thiết:
Số lượng Vật liệu cần thiết
1

Bộ khởi động lớp học VEX V5 (có phần mềm cập nhật)

1

Mã VEXcode V5

1

Sổ tay kỹ thuật

1

Dự án ví dụ về Clawbot và Advanced TrainingBot (Hệ thống truyền động 2 động cơ, Không có con quay hồi chuyển)

1

Lon nhôm

Bước 1: Chuẩn bị cho cuộc khám phá

Trước khi bắt đầu hoạt động, bạn đã chuẩn bị sẵn những vật dụng này chưa? Kiểm tra từng mục sau:

Biểu tượng Mẹo của Giáo viên Mẹo dành cho giáo viên

Làm mẫu từng bước khắc phục sự cố cho học sinh.

Bước 2: Bắt đầu một dự án mới

Trước khi bắt đầu dự án, hãy chọn đúng mẫu dự án. Dự án ví dụ về Clawbot và Advanced TrainingBot (Hệ thống truyền động 2 động cơ, Không có con quay hồi chuyển) chứa cấu hình động cơ của Clawbot. Nếu không sử dụng mẫu, robot của bạn sẽ không chạy dự án đúng cách.

Thanh công cụ VEXcode V5 với menu File mở và Open Examples được đánh dấu trong hộp màu đỏ. Mở ví dụ là mục thứ tư trong menu bên dưới Dự án khối mới, Dự án văn bản mới và Mở.

Hoàn thành các bước sau:

  • Mở menu Tệp.
  • ChọnMởVí dụ.

Biểu tượng Clawbot và Advanced TrainingBot với hình ảnh robot màu xám phía trên văn bản.

  • Chọn và mở dự án ví dụ Clawbot và Advanced TrainingBot (Hệ thống truyền động 2 động cơ, Không có con quay hồi chuyển).
  • Vì chúng ta sẽ lập trình để điều khiển móng vuốt, hãy đổi tên dự án của bạnClawControl.
  • Lưudự án của bạn.
  • Kiểm tra để đảm bảo tên dự án ClawControl hiện nằm trong cửa sổ ở giữa thanh công cụ.

Hộp thoại tên dự án trong Thanh công cụ VEXcode V5 có nội dung là Claw Control và hiển thị Slot 1 đã chọn.

Biểu tượng Mẹo của Giáo viên Mẹo dành cho giáo viên

  • Vì đây là hoạt động bắt đầu với lập trình nên giáo viên nên làm mẫu các bước, sau đó yêu cầu học sinh thực hiện các hành động tương tự. Sau đó, giáo viên nên theo dõi học sinh để đảm bảo rằng các em đang thực hiện đúng các bước.
  • Đảm bảo rằng học sinh đã chọn Mở ví dụ từ menu Tệp.
  • Đảm bảo rằng học sinh đã chọn dự án ví dụ Clawbot và Advanced TrainingBot (Hệ thống truyền động 2 động cơ, Không có con quay hồi chuyển).

    Bạn có thể chỉ cho học sinh rằng có một số lựa chọn để chọn trên trangVí dụ. Khi xây dựng và sử dụng các robot khác, trẻ sẽ có cơ hội sử dụng các mẫu khác nhau.
  • Bạn có thể yêu cầu học sinh thêm chữ cái đầu hoặc tên nhóm của mình vào tên dự án. Điều này sẽ giúp phân biệt các dự án nếu bạn yêu cầu học sinh nộp chúng.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Dừng lại và thảo luận

Đây là thời điểm thích hợp để tạm dừng và yêu cầu các nhóm học sinh xem lại các bước vừa hoàn thành khi bắt đầu một dự án mới trong VEXcode V5.

Bước 3: Lập trình V5 Claw để mở

Bây giờ chúng ta sẽ bắt đầu bằng cách lập trình cho móng vuốt mở ra!

int main() {
  // Khởi tạo cấu hình Robot. KHÔNG ĐƯỢC THÁO RA!
  vexcodeInit();

  ClawMotor.setPosition(0, độ);

}
  • Viết lệnhClawMotor.setPosition();như được hiển thị ở trên trong vùng lập trình để thiết lập vị trí bắt đầu cho càng.
  ClawMotor.setPosition(0, độ);
  ClawMotor.setTimeout(2, giây);
  • Thêm lệnhClawMotor.setTimeout();như minh họa ở trên.
    • Lưu ý rằng lệnh này xuất hiện trước lệnhClawMotor.spinFor();. Mục đích của nó là thiết lập thời gian động cơ Claw có thể chạy và dừng động cơ sau thời gian đó. Vì vậy, ngay cả khi động cơ không di chuyển đủ 60 độ, dự án vẫn dừng động cơ Claw sau hai giây trôi qua.
    • Hãy đảm bảo lệnh Set Timeout được thụt lề để khớp với lệnh Set Position và tất cả các lệnh đều nằm trong dấu ngoặc nhọn.
  ClawMotor.setPosition(0, độ);
  ClawMotor.setTimeout(2, giây);
  ClawMotor.spinFor(đảo ngược, 60, độ);
  • Viết lệnhClawMotor.spinFor();như minh họa ở trên để mở càng 60 độ.

Mở lựa chọn khe cắm với khe cắm 1 được đánh dấu trong hộp màu đỏ bên cạnh hộp thoại tên dự án trên Thanh công cụ VEXcode V5. Tên dự án là Claw Control.

  • Chọn vị trí mà dự án sẽ được tải xuống trên V5 Robot Brain bằng cách nhấp vào biểu tượng hộp số 1 để mở tất cả các vị trí dự án khả dụng và chọn vị trí mong muốn.

Thanh công cụ VEXcode V5 có hộp màu đỏ bao quanh Biểu tượng Bộ não màu xanh lá cây. Biểu tượng Não nằm bên phải biểu tượng Bộ điều khiển và bên trái biểu tượng Tải xuống.

  • Kết nối robot với máy tính hoặc máy tính bảng của bạn. Biểu tượng Não trên thanh công cụchuyển sang màu xanh lásau khi kết nối thành công.

Thanh công cụ VEXcode V5 có hộp màu đỏ xung quanh biểu tượng Tải xuống. Các biểu tượng được đọc từ trái sang phải là Bộ điều khiển, Não, Tải xuống, Chạy và Dừng.

  • Nhấp vào biểu tượng Tải xuống bên cạnh biểu tượng Thông tin thiết bị để tải dự án xuống V5 Robot Brain.

Màn hình chính của V5 Brain hiển thị dự án Claw Control ở ô 1 góc dưới bên trái. Hàng biểu tượng phía trên có nội dung là Drive, Devices, Settings và VEX.

  • Kiểm tra xem dự án ClawControl đã được tải xuống bộ nhớ ở vị trí bạn chọn chưa.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Tùy chọn để làm mẫu trước

Làm mẫu chạy dự án trước lớp trước khi cho tất cả học sinh thử cùng một lúc. Tập hợp học sinh vào một khu vực và đặt Clawbot sao cho tất cả mọi người đều có thể nhìn thấy móng vuốt của nó. Nếu bạn dự định trình diễn nhiều lần, bạn có thể nhẹ nhàng đẩy Móng vuốt đóng lại giữa các lần chạy.
Nói với học sinh rằng bây giờ đến lượt các em chạy dự án của mình.

  • Chạy (trongC++hoặcPython) dự án trên Clawbot bằng cách đảm bảo dự án được chọn, sau đó nhấn nút Chạy. Xin chúc mừng vì đã tạo ra dự án đầu tiên để di chuyển Claw!

Bước 4: Hãy thử cách này: Đóng V5 Claw

Bây giờ bạn đã lập trình cho móng vuốt mở ra, tiếp theo bạn sẽ lập trình cho móng vuốt đóng lại.

Hình ảnh cận cảnh từ trên xuống của V5 Claw khi đóng hoàn toàn.

Hình ảnh của V5 Claw đóng lại Bây giờ bạn đã có thể mở móng vuốt, bạn cũng sẽ muốn đóng nó lại.

  • Quay lại dự án ClawControl của bạn và thêm lệnhClawMotor.spinFor();insđể Claw Motor quay đóng trong 30 độ. Móng vuốt sẽ khép lại một nửa vì ban đầu nó sẽ mở ra một góc 60 độ.
  • Kiểm tra xem dự án đã sửa đổi của bạn có mở móng vuốt ở góc 60 độ rồi đóng lại ở góc 30 độ hay không bằng cách tải xuống và chạy dự án ClawControl.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Giải pháp

Trước đây, Claw mở ở góc 60 độ. Dự án đó bao gồm hướng dẫn thiết lập thời gian chờ động cơ vì đây là một hoạt động quan trọng cần thực hiện khi cấp nguồn cho bộ điều khiển có thể bị hạn chế chuyển động theo một cách nào đó. Thiết lập thời gian chờ sẽ ngăn ngừa hao mòn không cần thiết cho động cơ.
Sau đây là giải pháp cho bước này:

int main() {
  // Khởi tạo cấu hình Robot. KHÔNG ĐƯỢC THÁO RA!
  vexcodeInit();

  ClawMotor.setPosition(0, độ);
  ClawMotor.setTimeout(2, giây);
  ClawMotor.spinFor(ngược, 60, độ);
  ClawMotor.spinFor(tiến, 30, độ);

}

Bước 5: Hãy thử điều này: Thực hiện nhiều chuyển động theo trình tự

Hình ảnh cận cảnh từ trên xuống của một càng V5 mở với các mũi tên hướng vào và hướng ra cho biết chuyển động của càng.

Hình ảnh V5 Claw mở với các mũi tên màu đỏ ở cuối hình ảnh cho biết hướng mà móng vuốt có thể mở và đóng, di chuyển theo chiều ngang để kẹp hoặc thả các vật thểKhông phải mọi thứ bạn nhặt bằng móng vuốt đều có cùng kích thước. Hãy thử mở móng vuốt theo nhiều vị trí khác nhau dọc theo phạm vi chuyển động.

  • Quay động cơ để:
    • Mở ở nhiệt độ 70 độ
    • Đóng cửa 20 độ
    • Mở ở mức 10 độ
    • Đóng cửa 30 độ
    • Đóng cửa ở mức 25 độ
  • Nếu Động cơ móng vuốt bắt đầu ở góc 0 độ, thì Động cơ móng vuốt sẽ mở ở góc bao nhiêu độ khi kết thúc dự án?
  • Bắt đầu bằng cách đóng Động cơ móng vuốt.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Giải pháp

Giải pháp cho bước này được trình bày bên dưới.
Động cơ móng vuốt vẫn mở ở góc 5 độ khi kết thúc dự án: 70 - 20 = 50 --> 50 + 10 = 60 --> 60 - 30 = 30 --> 30 - 25 = 5 độ.

int main() {
  // Khởi tạo cấu hình Robot. KHÔNG ĐƯỢC THÁO RA!
  vexcodeInit();

  // Lấy vị trí hiện tại của Claw là số không
  ClawMotor.setPosition(0, degrees);

  // Đặt thời gian chờ của Claw
  ClawMotor.setTimeout(2, seconds);

  ClawMotor.spinFor(reverse, 70, degrees);
  ClawMotor.spinFor(forward, 20, degrees);
  ClawMotor.spinFor(reverse, 10, degrees);
  ClawMotor.spinFor(forward, 30, degrees);
  ClawMotor.spinFor(forward, 25, degrees);

}

Bước 6: Hoàn thành thử thách Khóa chặt

Góc nhìn cận cảnh của V5 Claw đang kẹp chặt một lon nước ngọt bằng nhôm.

Hình ảnh cận cảnh của V5 Claw đang giữ một lon nhôm Thử thách khóa chặt

  • Lập trình cho Clawbot đóng chặt càng vào lon nhôm 12 ounce rỗng mà không làm dập thành lon.
  • Yêu cầu Clawbot giữ chặt lon trong khi nâng và hạ cánh tay trong góc 45 độ.
  • Sau đó, Clawbot sẽ thả lon ra và lùi xa ra.
  • Bắt đầu thử thách với một chiếc càng mở và bên trong có một chiếc lon rỗng.

Biểu tượng Mẹo của Giáo viên Mẹo dành cho giáo viên

  • Yêu cầu học sinh bắt đầu thử thách bằng một chiếc càng mở và một chiếc lon rỗng bên trong.

  • Nếu lon bị đè bẹp hoặc rơi ra khỏi móc, bạn phải bắt đầu lại thử thách sau khi điều chỉnh dự án.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Giải pháp

Sau đây là một giải pháp ví dụ:

int main() {
  // Khởi tạo cấu hình Robot. KHÔNG ĐƯỢC THÁO RA!
  vexcodeInit();
  
  // Lấy vị trí hiện tại của ClawMotor là số không
  ClawMotor.setPosition(0, degrees);
  
  // Đặt thời gian chờ của ClawMotor
  ClawMotor.setTimeout(2, seconds);
  
  ClawMotor.spinFor(forward, 170, degrees);
  ArmMotor.spinFor(forward, 45, degrees);
  ArmMotor.spinFor(reverse, 45, degrees);
  ClawMotor.spinFor(reverse, 150, degrees);
  Drivetrain.driveFor(reverse, 150, mm);
  
}
  • Dự án thiết lập thời gian chờ, đóng móc khóa quanh lon, nâng và hạ lon, thả lon ra rồi lùi lại.
  • Tiêu chí lập trình(Google Doc / .docx / .pdf)