Skip to main content
교사 포털

클로 프로그래밍 - C++

교사 도구 상자 아이콘 교사 도구 상자 개요

  • 이 탐구를 통해 학생들은 V5 클로봇의 클로 모터에 대한 기본 프로그래밍을 배우게 됩니다.

  • 클로 모터를 프로그래밍하는 법을 배우면 학생들은 V5 클로봇이 주변 환경에서 물체를 잡는 방식을 적절하게 제어할 수 있습니다.

V5 클로봇을 손에 넣을 준비가 되었습니다!

이 탐색을 통해 V5 클로봇의 집게발을 이용해 물건을 잡는 멋진 프로젝트를 만들어 볼 수 있습니다.

  • 이 탐색에 사용될 VEXcode V5 지침은 다음과 같습니다.
    • ClawMotor.setPosition(0,도);
    • ClawMotor.spinFor(앞으로, 90, 도);
    • ClawMotor.setTimeout(2, 초);
  • 지침에 대한 자세한 정보를 알아보려면 도움말을 선택한 다음 명령 옆에 있는 물음표 아이콘을 선택하여 자세한 정보를 확인하세요.

    작업 공간에 입력한 명령에 대한 드라이브가 있는 VEXcode V5와 오른쪽에 열린 해당 명령에 대한 도움말입니다. 도움말은 명령을 정의하고 사용 방법에 대한 정보를 제공합니다.

  • 필요한 하드웨어, 엔지니어링 노트북, VEXcode V5를 다운로드하여 준비하세요.
필요한 자료:
수량 필요한 재료
1

VEX V5 교실 스타터 키트(최신 펌웨어 포함)

1

VEX코드 V5

1

엔지니어링 노트북

1

Clawbot 및 Advanced TrainingBot(드라이브트레인 2모터, 자이로 없음) 예제 프로젝트

1

알루미늄 캔

1단계: 탐색 준비

활동을 시작하기 전에 다음 항목을 모두 준비하셨나요? 다음 각 항목을 확인하세요.

교사 팁 아이콘 교사 팁

학생들에게 각 문제 해결 단계를 모델로 보여줍니다.

2단계: 새 프로젝트 시작

프로젝트를 시작하기 전에 올바른 템플릿 프로젝트를 선택하세요. Clawbot과 Advanced TrainingBot(Drivetrain 2-motor, No Gyro) 예제 프로젝트에는 Clawbot의 모터 구성이 포함되어 있습니다. 템플릿을 사용하지 않으면 로봇이 프로젝트를 올바르게 실행하지 않습니다.

파일 메뉴가 열려 있고 예제 열기가 빨간색 상자로 강조 표시된 VEXcode V5 도구 모음입니다. 예제 열기는 새 블록 프로젝트, 새 텍스트 프로젝트, 열기 아래의 메뉴에 있는 네 번째 항목입니다.

다음 단계를 완료하세요.

  • 파일 메뉴를 엽니다.
  • 선택열기.

텍스트 위에 회색 로봇이 있는 Clawbot과 Advanced TrainingBot이라는 아이콘.

  • Clawbot과 Advanced TrainingBot(Drivetrain 2-motor, No Gyro) 예제 프로젝트를 선택하여 엽니다.
  • 클로를 제어하기 위한 프로그래밍을 하게 되므로 프로젝트 이름을ClawControl바꾸세요.
  • 프로젝트를저장하세요.
  • 도구 모음 중앙 창에 프로젝트 이름 ClawControl이 있는지 확인하세요.

VEXcode V5 도구 모음의 프로젝트 이름 대화 상자에 Claw Control이 읽히고 Slot 1이 선택된 것이 표시됩니다.

교사 팁 아이콘 교사 팁

  • 이것은 프로그래밍의 시작 활동이므로 교사는 단계를 모델로 보여준 다음 학생들에게 동일한 동작을 완료하도록 요청해야 합니다. 그런 다음 교사는 학생들이 단계를 올바르게 따르고 있는지 모니터링해야 합니다.
  • 학생들이 파일 메뉴에서 예제 열기를 선택했는지 확인하세요.
  • 학생들Clawbot과 Advanced TrainingBot(Drivetrain 2-motor, No Gyro) 예제 프로젝트를 선택했는지 확인하세요.

    학생들에게 예제페이지에서 선택할 수 있는 항목이 여러 개 있다는 점을 알려줄 수 있습니다. 학생들이 다른 로봇을 만들고 사용하면서 다양한 템플릿을 사용할 기회를 얻게 됩니다.
  • 학생들에게 프로젝트 이름에 자신의 이니셜이나 그룹 이름을 추가하도록 요청할 수 있습니다. 학생들에게 프로젝트를 제출하도록 요청할 경우, 프로젝트를 구분하는 데 도움이 됩니다.

교사 도구 상자 아이콘 교사 도구 상자 - 멈추고 토론하기

여기서 잠시 멈춰서 학생 그룹이 VEXcode V5에서 새 프로젝트를 시작하기 위해 방금 완료한 단계를 검토해 보는 것이 좋습니다.

3단계: V5 Claw를 열도록 프로그래밍

이제 집게발이 열리도록 프로그래밍하는 것부터 시작해 보겠습니다!

int main() {
  // 로봇 구성 초기화. 제거하지 마세요!
  vexcodeInit();

  ClawMotor.setPosition(0,도);

}
  • 프로그래밍 영역에서 위에 표시된 대로ClawMotor.setPosition();명령어를 작성하여 클로의 시작 위치를 설정합니다.
  ClawMotor.setPosition(0, 도);
  ClawMotor.setTimeout(2, 초);
  • 위에 표시된 대로ClawMotor.setTimeout();명령어를 추가합니다.
    • 이 명령어는ClawMotor.spinFor();명령어 앞에 나타납니다. 이 기능의 목적은 클로 모터가 얼마나 오랫동안 작동할 수 있는지 설정하고 해당 시간 이후에는 작동을 멈추는 것입니다. 따라서 모터가 60도 완전히 움직이지 않더라도 프로젝트는 2초가 지나면 Claw 모터를 멈춥니다.
    • Set TimeoutSet Position 명령과 맞게 들여쓰기 되었는지 확인하고, 모든 명령이 중괄호 안에 있는지 확인하세요.
  ClawMotor.setPosition(0,도);
  ClawMotor.setTimeout(2,초);
  ClawMotor.spinFor(역방향, 60,도);
  • 위에 표시된 대로ClawMotor.spinFor();명령어를 작성하여 클로를 60도 엽니다.

VEXcode V5 도구 모음의 프로젝트 이름 대화 상자 옆에 있는 빨간색 상자로 슬롯 1이 강조 표시된 슬롯 선택이 열립니다. 프로젝트 이름은 Claw Control입니다.

  • V5 로봇 브레인에서 프로젝트를 다운로드할 슬롯을 선택하려면 상자로 표시된 1 아이콘을 클릭하여 사용 가능한 모든 프로젝트 슬롯을 열고 원하는 슬롯을 선택하세요.

녹색 두뇌 아이콘 주위에 빨간색 상자가 있는 VEXcode V5 도구 모음입니다. 뇌 아이콘은 컨트롤러 아이콘의 오른쪽, 다운로드 아이콘의 왼쪽에 있습니다.

다운로드 아이콘 주위에 빨간색 상자가 있는 VEXcode V5 도구 모음입니다. 아이콘은 왼쪽에서 오른쪽으로 컨트롤러, 브레인, 다운로드, 실행, 중지입니다.

  • 장치 정보 아이콘 옆에 있는 다운로드 아이콘을 클릭하여 프로젝트를 V5 로봇 브레인에 다운로드하세요.

슬롯 1의 왼쪽 하단에 있는 Claw Control 프로젝트를 보여주는 V5 Brain 홈 화면입니다. 위의 아이콘 행에는 드라이브, 장치, 설정, VEX가 적혀 있습니다.

  • ClawControl 프로젝트가 선택한 슬롯의 브레인에 다운로드되었는지 확인하세요.

교사 도구 상자 아이콘 교사 도구 상자 - 먼저 모델링 옵션

모든 학생이 한꺼번에 시도하기 전에, 먼저 학급 앞에서 프로젝트를 진행하는 모델을 만드세요. 학생들을 한곳에 모으고 클로봇의 발톱을 모두가 볼 수 있는 위치에 놓습니다. 한 번 이상 시연할 계획이라면, 실행 사이에 Claw를 살짝 밀어 닫아주면 됩니다.
학생들에게 이제 각자 프로젝트를 실행할 차례라고 말하세요.

  • Clawbot에서 프로젝트를 선택했는지 확인한 다음 실행 버튼을 눌러 프로젝트를 실행(C++또는Python)합니다. 클로를 옮기는 첫 프로젝트를 만든 것을 축하합니다!

4단계: 다음을 시도해 보세요: V5 클로 닫기

이제 집게발이 열리도록 프로그래밍했으니, 이제는 닫히도록 프로그래밍해야 합니다.

V5 클로가 완전히 닫힌 모습을 위에서 아래로 확대한 이미지입니다.

V5 클로우가 닫힌 모습 이제 발톱을 열 수 있게 되었으니, 이제 발톱도 닫고 싶을 것입니다.

  • ClawControl 프로젝트로 돌아가서ClawMotor.spinFor();ins명령어를 추가하여 Claw Motor가 30도 동안 회전하도록 합니다. 원래 60도 각도로 회전했기 때문에 집게발은 절반 정도만 닫혀야 합니다.
  • ClawControl 프로젝트를 다운로드하고 실행하여 수정된 프로젝트에서 클로가 60도 열리고 30도 닫히는지 테스트합니다.

교사 도구 상자 아이콘 교사 도구 상자 - 솔루션

이전에는 클로가 60도까지 열렸습니다. 해당 프로젝트에는 모터 타임아웃 지침이 포함되었는데, 조작기의 움직임이 어떤 식으로든 제한될 수 있는 조작기에 전원을 공급할 때 타임아웃을 설정하는 것이 중요한 관행이기 때문입니다. 타임아웃을 설정하면 모터의 불필요한 마모를 방지할 수 있습니다.
이 단계의 솔루션은 다음과 같습니다.

int main() {
  // 로봇 구성 초기화. 제거하지 마세요!
  vexcodeInit();

  ClawMotor.setPosition(0, 도);
  ClawMotor.setTimeout(2, 초);
  ClawMotor.spinFor(역방향, 60, 도);
  ClawMotor.spinFor(전방향, 30, 도);

}

5단계: 다음을 시도해 보세요: 여러 동작 시퀀싱

열린 V5 클로의 클로즈업 위에서 아래로 찍은 이미지이며, 클로의 움직임을 나타내는 화살표가 안쪽과 바깥쪽을 가리킵니다.

이미지 하단에 빨간색 화살표가 있는 V5 클로 오픈 이미지는 클로가 수평으로 움직여 물체를 잡거나 놓을 수 있는 방향을 나타냅니다.집게로 집어 올리는 모든 물건이 크기가 같은 것은 아닙니다. 움직임 범위에 따라 발톱을 다른 위치로 열어보세요.

  • 모터를 회전시켜 다음을 수행합니다.
    • 70도까지 열려 있음
    • 20도에서는 닫힙니다
    • 10도까지 개방
    • 30도에서는 닫힙니다
    • 25도에서는 닫힙니다
  • 클로 모터가 0도에서 시작하면 프로젝트가 끝났을 때 클로 모터는 몇 도까지 열리나요?
  • 클로 모터를 닫은 상태에서 시작합니다.

교사 도구 상자 아이콘 교사 도구 상자 - 솔루션

이 단계에 대한 해결책은 아래와 같습니다.
프로젝트가 끝날 때 Claw Motor는 여전히 5도 열려 있습니다. 70 - 20 = 50 --> 50 + 10 = 60 --> 60 - 30 = 30 --> 30 - 25 = 5도.

int main() {
  // 로봇 구성 초기화. 제거하지 마세요!
  vexcodeInit();

  // Claw의 현재 위치를 0으로 설정합니다.
  ClawMotor.setPosition(0, degrees);

  // 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);

}

6단계: Lock Tight Challenge 완료

알루미늄 음료수 캔을 움켜쥐고 있는 V5 클로의 측면을 가까이서 본 모습.

알루미늄 캔을 들고 있는 V5 클로의 클로즈업 이미지 잠금장치 챌린지

  • 측면이 으깨지지 않고 빈 12온스 알루미늄 캔의 클로를 단단히 닫도록 클로봇을 프로그래밍하세요.
  • 클로봇이 캔을 잡고 팔을 45도 위아래로 움직이게 하세요.
  • 그러면 클로봇은 캔을 꺼내고 뒤로 물러서야 합니다.
  • 열린 집게발과 그 안에 빈 캔을 넣은 채로 도전을 시작하세요.

교사 팁 아이콘 교사 팁

  • 학생들에게 열린 발톱과 그 안에 빈 캔이 있는 상태로 도전을 시작하게 하세요.

  • 캔이 으깨지거나 집게발에서 떨어지면 프로젝트를 조정한 후 도전을 다시 시작해야 합니다.

교사 도구 상자 아이콘 교사 도구 상자 - 솔루션

다음은 해결책의 예입니다.

int main() {
  // 로봇 구성 초기화. 제거하지 마세요!
  vexcodeInit();
  
  // Claw의 현재 위치를 0으로 설정합니다.
  ClawMotor.setPosition(0, degrees);
  
  // Claw의 시간 초과를 설정합니다.
  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);
  
}
  • 이 프로젝트는 시간 초과를 설정하고, 캔 주위의 클로를 닫고, 캔을 들어올리고 내리고, 놓은 다음 뒤로 물러납니다.
  • 프로그래밍 루브릭(Google Doc / .docx / .pdf)