Skip to main content

컨트롤러와 루프 - C++

컨트롤러와 루프

경쟁에서 각 팀은 컨트롤러를 이용해 무선으로 로봇을 조작해야 합니다. 컨트롤러는 사용자의 입력에 따라 로봇을 업데이트하도록 프로그래밍됩니다. 이 프로젝트에서는 루프를 사용하여 로봇이 업데이트된 입력 정보를 반복적으로 확인합니다. 루프를 사용하면 프로젝트에서 어떤 버튼이 눌렸는지, 조이스틱이 얼마나 눌렸는지 빠르게 확인할 수 있습니다. 이 정보가 확인되면 로봇에 빠르게 전달되어 로봇이 컨트롤러의 지시에 신속하게 대응할 수 있습니다.

다음은 VEXcode V5의 Tank Drive 예제 프로젝트입니다. 이 프로젝트의forever루프는 모터의 속도를 설정하기 위해 축 2와 3의 위치를 영원히 확인합니다.

// V5 라이브러리 포함
#include "vex.h"

// VEX 라이브러리를 더 쉽게 사용할 수 있도록 함
using namespace vex;

int main() {
  // 로봇 구성 초기화. 제거하지 마세요!
  vexcodeInit();
  // 프로젝트 코드 시작.
  // 모터를 컨트롤러 축 위치
  설정하는 메인 컨트롤러 루프 while (true) {
    LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
    RightMotor.setVelocity(Controller1.Axis2.position(), percent);
    LeftMotor.spin(forward);
    RightMotor.spin(forward);

    wait(5, msec);
  }

  return 0;
}

컨트롤러가 없는 자율 프로그래밍에도 루프는 중요합니다. 루프는 프로젝트 내에서 반복되는 명령을 단순화하고 구성하는 데 도움이 됩니다.

학습 확장 아이콘 학습을 확장하세요

이 활동을 확장하려면 학생들에게 아케이드 컨트롤과 탱크 컨트롤의 차이점을 탐구해 보라고 하세요. 학생들은 VEXcode V5에서 찾을 수 있는 예제 프로젝트를 따라 할 수 있습니다.

예시 프로젝트는 4개입니다: Left Arcade, Right Arcade, Split Arcade, Tank Drive.

프로그램 내의 루프가 어떻게 작동하는지, 그리고 각 제어 유형의 장단점을 논의해 보세요.

이 활동을 수학과 연관시키려면 위의 좌우 아케이드(조이스틱 1개)와 분할 아케이드/탱크 드라이브(조이스틱 2개) 프로젝트를 사용하여 프로젝트 내에서 X축과 Y축의 역할에 대해 논의해 보세요.