Skip to main content

Lập trình cánh tay robot - 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ơ cánh tay của V5 Clawbot.

  • Học cách lập trình Động cơ cánh tay cho phép học sinh kiểm soát chính xác các chuyển động cánh tay của V5 Clawbot. Để biết thêm thông tin về các hướng dẫn được sử dụng trong chương trình văn bản, hãy truy cập thông tin trợ giúp

V5 Clawbot đã sẵn sàng để sử dụng!

Khám phá này sẽ cung cấp cho bạn các công cụ để có thể bắt đầu tạo ra một số dự án thú vị sử dụng cánh tay V5 Clawbot.

  • Hướng dẫn VEXcode V5 sẽ được sử dụng trong quá trình khám phá này:
    • ArmMotor.spinFor(hướng về phía trước, 90, độ);
    • ArmMotor.setPosition(0, độ);
    • chờ (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 hiển thị lệnh Drive được nhập trong không gian làm việc và mục Trợ giúp mở ra bên phải cho lệnh đó. Phần trợ giúp định nghĩa lệnh Drive để di chuyển Hệ thống truyền động theo một khoảng cách nhất định và giải thích cách sử dụng lệnh trong một dự án.

  • 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)

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 menu thứ tư 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 cánh tay, hãy đổi tên dự án của bạnArmControl.
  • Lưudự án của bạn.
  • Kiểm tra để đảm bảo tên dự án ArmControl 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 ghi là Arm Control và cho biết Slot 1 đã được 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 mẫu Clawbot (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 biết 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 - Lưu dự án

  • Chỉ ra rằng khi họ mở VEXcode V5 lần đầu, cửa sổ được gắn nhãn là MyProject1. MyProject1 là tên dự án mặc định khi VEXcode V5 được mở lần đầu. Sau khi dự án được đổi tên thành Drive và lưu, màn hình sẽ được cập nhật để hiển thị tên dự án mới. Sử dụng cửa sổ này trên thanh công cụ, bạn có thể dễ dàng kiểm tra xem học sinh có đang sử dụng đúng dự án hay không.

  • Nói với học sinh rằng bây giờ các em đã sẵn sàng bắt đầu dự án đầu tiên của mình. Giải thích cho học sinh rằng chỉ cần làm theo một vài bước đơn giản, các em sẽ có thể tạo và chạy một dự án có thể nâng và hạ cánh tay của Clawbot.

  • Nhắc nhở học sinh lưu dự án của mình khi đang làm bài. Bài viết nàytừ Cơ sở kiến thức về Robot VEX giải thích các phương pháp lưu trong VEXcode V5.

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: Di chuyển cánh tay lên

Bây giờ chúng ta sẽ bắt đầu bằng cách lập trình cho cánh tay nâng lên!

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

  ArmMotor.setPosition(0, độ);

}
  • Viết lệnh ArmMotor.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ánh tay.
  ArmMotor.setPosition(0, độ);
  ArmMotor.spinFor(hướng về phía trước, 90, độ);
  • Thêm lệnh ArmMotor.spinFor(); bên dưới lệnh ArmMotor.setPosition() như hiển thị ở trên để di chuyển cánh tay lên. Hãy đảm bảo rằng lệnh Spin For được thụt vào để 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.

Thanh công cụ VEXcode V5 với ô chọn mở bên cạnh tên dự án. Khe 1 được chọn và đánh dấu bằng hộp màu đỏ và tên dự án là Arm Control.

  • Nhấp vào biểu tượng Slot. Bạn có thể tải dự án của mình xuống một trong các vị trí có sẵn trong Robot Brain. Nhấp vào ô 1.

Thanh công cụ trong VEXcode V5 với hộp màu đỏ bao quanh biểu tượng 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 nút 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ụ trong VEXcode V5 với hộp màu đỏ xung quanh nút tải xuống. Các biểu tượng hiển thị 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 nútTải xuốngtrên thanh công cụ để tải dự án Drive xuống Robot Brain.

Biểu tượng Hộp công cụ của giáo viên Hộp công cụ giáo viên - Trợ giúp với văn bản

  • Nếu học sinh đang sử dụng máy tính, hãy yêu cầu các em ngắt kết nối cáp USB khỏi Robot Brain. Việc kết nối robot với máy tính trong khi chạy một dự án có thể khiến robot kéo cáp kết nối.

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

  • Kiểm tra xem dự án ArmControl đã được tải xuống bộ nhớ trong khe 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à chừa đủ không gian để Clawbot có thể di chuyển cánh tay. Trình bày cách kết thúc dự án và đưa cánh tay của Clawbot trở lại vị trí nghỉ ngơi.

Nói với học sinh rằng bây giờ đến lượt các em thực hiện dự án của mình. Đảm bảo rằng có đủ không gian để Clawbot có thể nâng cánh tay lên một cách an toàn.

  • Chạydự á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ì bạn đã tạo ra dự án Claw Arm đầu tiên của mình!

Bước 4: Hãy thử điều này: Lập trình cánh tay xuống

Bây giờ bạn đã lập trình cho cánh tay di chuyển lên, bạn sẽ lập trình cho cánh tay hạ xuống hoặc di chuyển xuống.

Hình ảnh của VEXcode V5 Clawbot với cánh tay hạ xuống

  • Thêm lệnh ArmMotor.spinFor(); thứ hai vào dự án ArmControl của bạn để cánh tay nâng lên góc 90 độ, đợi 2 giây rồi hạ xuống.
    • Gợi ý:Bạn sẽ cần phải thay đổi hướng trong hướng dẫn.
  • Lưu ý rằng cánh tay giữ nguyên vị trí trong khi lệnhwaitđang chạy. Động cơ lấy năng lượng từ pin để giữ cho cánh tay chống lại lực hấp dẫn. Bởi vì cài đặt mặc định để dừng động cơ là cài đặtgiữ. Có hai cài đặt khác để dừng -phanhbờ. Bạn sẽ tìm hiểu về những điều đó trong phòng thí nghiệm khá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 - Giải pháp

Giải pháp cho thách thức này nằm ở bên dưới. Để hạ cánh tay xuống, học sinh cần thay đổi tham số “tiến” thành “đảo ngược” trong lệnh ArmMotor.spinFor(); đã được thêm vào.

// Bắt đầu mã dự án
int main() {
  // Khởi tạo cấu hình Robot. KHÔNG ĐƯỢC THÁO RA!
  vexcodeInit();

  ArmMotor.setPosition(0, độ);
  ArmMotor.spinFor(tiến, 90, độ);
  chờ(2, giây);
  ArmMotor.spinFor(ngược, 90, độ);
  
}

Bước 5: Hoàn thành Thử thách Kiểm soát viên không lưu

Hình ảnh của VEXcode V5 Clawbot với cánh tay giơ lên và các mũi tên màu đỏ hướng lên và xuốngTrong Thử thách kiểm soát viên không lưu, Clawbot phải di chuyển cánh tay lên xuống một lần trong 90 độ, đợi 3 giây, di chuyển cánh tay lên xuống hai lần trong 45 độ, đợi 5 giây, sau đó di chuyển cánh tay lên xuống ba lần trong 90 độ.

Sau đây là danh sách các hành vi của Clawbot:

  • Di chuyển cánh tay lên rồi xuống 90 độ.
  • Chờ 3 giây.
  • Di chuyển cánh tay lên rồi xuống 45 độ.
  • Di chuyển cánh tay lên rồi xuống 45 độ.
  • Chờ 5 giây.
  • Di chuyển cánh tay lên rồi xuống 90 độ.
  • Di chuyển cánh tay lên rồi xuống 90 độ.
  • Di chuyển cánh tay lên rồi xuống 90 độ.

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

Hầu hết các hướng dẫn trong thử thách này là ArmMotor.spinFor();. Sau khi thêm hướng dẫn di chuyển cánh tay lên trên và hướng dẫn di chuyển cánh tay xuống dưới, bạn có thể đánh dấu hai hướng dẫn, nhấp chuột phải, sau đó chọn sao chép và dán chúng nhiều lần nếu cần. Sau đó, các tham số có thể được thay đổi để đáp ứng thử thách và lệnh wait() có thể được thêm vào giữa.

Dự án VEXcode V5 C++ trong không gian làm việc với lệnh đặt vị trí Arm Motor được tô sáng và menu ngữ cảnh mở ra. Con trỏ đang di chuyển qua lệnh Sao chép trong menu ngữ cảnh, đây là lệnh thứ mười một trong danh sách, ngay sau lệnh Cắt.

  • Giải pháp cho thử thách của kiểm soát viên không lưu: 
// Bắt đầu mã dự án
int main() {

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

  ArmMotor.setPosition(0, độ);
  ArmMotor.spinFor(hướng tới, 90, độ);
  ArmMotor.spinFor(hướng ngược, 90, độ);
  wait(3, giây)
  ArmMotor.spinFor(hướng tới, 45, độ);
  ArmMotor.spinFor(hướng ngược, 45, độ);
  ArmMotor.spinFor(hướng tới, 45, độ);
  ArmMotor.spinFor(hướng ngược, 45, độ);
  wait(5, giây)
  ArmMotor.spinFor(hướng tới, 90, độ);
  ArmMotor.spinFor(hướng ngược, 90, độ);
  ArmMotor.spinFor(hướng tới, 90, độ);
  ArmMotor.spinFor(hướng ngược, 90, độ);
  ArmMotor.spinFor(tiến, 90, độ);
  ArmMotor.spinFor(ngược, 90, độ);
  
}