클로 프로그래밍 - C++
교사 도구 상자
개요
-
이 탐구를 통해 학생들은 V5 클로봇의 클로 모터에 대한 기본 프로그래밍을 배우게 됩니다.
-
클로 모터를 프로그래밍하는 법을 배우면 학생들은 V5 클로봇이 주변 환경에서 물체를 잡는 방식을 적절하게 제어할 수 있습니다.
V5 클로봇을 손에 넣을 준비가 되었습니다!
이 탐색을 통해 V5 클로봇의 집게발을 이용해 물건을 잡는 멋진 프로젝트를 만들어 볼 수 있습니다.
- 이 탐색에 사용될 VEXcode V5 지침은 다음과 같습니다.
- ClawMotor.setPosition(0,도);
- ClawMotor.spinFor(앞으로, 90, 도);
- ClawMotor.setTimeout(2, 초);
-
지침에 대한 자세한 정보를 알아보려면 도움말을 선택한 다음 명령 옆에 있는 물음표 아이콘을 선택하여 자세한 정보를 확인하세요.

- 필요한 하드웨어, 엔지니어링 노트북, 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의 모터 구성이 포함되어 있습니다. 템플릿을 사용하지 않으면 로봇이 프로젝트를 올바르게 실행하지 않습니다.
다음 단계를 완료하세요.
- 파일 메뉴를 엽니다.
- 선택열기예.
- Clawbot과 Advanced TrainingBot(Drivetrain 2-motor, No Gyro) 예제 프로젝트를 선택하여 엽니다.
- 클로를 제어하기 위한 프로그래밍을 하게 되므로 프로젝트 이름을ClawControl바꾸세요.
- 프로젝트를저장하세요.
- 도구 모음 중앙 창에 프로젝트 이름 ClawControl이 있는지 확인하세요.
교사 팁
- 이것은 프로그래밍의 시작 활동이므로 교사는 단계를 모델로 보여준 다음 학생들에게 동일한 동작을 완료하도록 요청해야 합니다. 그런 다음 교사는 학생들이 단계를 올바르게 따르고 있는지 모니터링해야 합니다.
- 학생들이 파일 메뉴에서 예제 열기를 선택했는지 확인하세요.
- 학생들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 Timeout 이 Set Position 명령과 맞게 들여쓰기 되었는지 확인하고, 모든 명령이 중괄호 안에 있는지 확인하세요.
ClawMotor.setPosition(0,도);
ClawMotor.setTimeout(2,초);
ClawMotor.spinFor(역방향, 60,도);- 위에 표시된 대로ClawMotor.spinFor();명령어를 작성하여 클로를 60도 엽니다.
- V5 로봇 브레인에서 프로젝트를 다운로드할 슬롯을 선택하려면 상자로 표시된 1 아이콘을 클릭하여 사용 가능한 모든 프로젝트 슬롯을 열고 원하는 슬롯을 선택하세요.
- 로봇을 컴퓨터나 태블릿에 연결합니다. 연결이 성공적으로 이루어지면 도구 모음의 Brain 아이콘이 녹색로 바뀝니다.
- 장치 정보 아이콘 옆에 있는 다운로드 아이콘을 클릭하여 프로젝트를 V5 로봇 브레인에 다운로드하세요.

- ClawControl 프로젝트가 선택한 슬롯의 브레인에 다운로드되었는지 확인하세요.
교사 도구 상자
-
먼저 모델링 옵션
모든 학생이 한꺼번에 시도하기 전에, 먼저 학급 앞에서 프로젝트를 진행하는 모델을 만드세요. 학생들을 한곳에 모으고 클로봇의 발톱을 모두가 볼 수 있는 위치에 놓습니다. 한 번 이상 시연할 계획이라면, 실행 사이에 Claw를 살짝 밀어 닫아주면 됩니다.
학생들에게 이제 각자 프로젝트를 실행할 차례라고 말하세요.
4단계: 다음을 시도해 보세요: 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단계: 다음을 시도해 보세요: 여러 동작 시퀀싱

집게로 집어 올리는 모든 물건이 크기가 같은 것은 아닙니다. 움직임 범위에 따라 발톱을 다른 위치로 열어보세요.
- 모터를 회전시켜 다음을 수행합니다.
- 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 완료

잠금장치 챌린지
- 측면이 으깨지지 않고 빈 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)