프로그래밍 드라이브 포워드 및 리버스 - C++
교사 도구 상자
개요
이 탐구를 통해 학생들에게 기본적인 전진, 후진, 대기 프로그래밍 동작을 소개합니다. 이러한 기본 기술은 학생들이 Speedbot을 사용하여 병원 바닥을 탐색할 때 이 STEM 랩의 마지막에 있는 Automed Challenge에서 성공하는 데 도움이 될 것입니다.
V5 Speedbot(구동계 2모터, 자이로 없음) 템플릿 프로젝트를 사용하면 학생들은 단 하나의 명령어만으로 Speedbot이 전진하도록 프로그래밍할 수 있습니다.
스피드봇이 움직일 준비가 되었습니다!
이 탐험을 통해 간단한 이동을 위해 스피드봇을 프로그래밍할 수 있는 도구를 얻을 수 있습니다. 이 활동이 끝나면 전진, 후진 및 대기 동작을 사용하여 농구 훈련 챌린지에 참여하게 됩니다.
교사 도구 상자
다음은 VEXcode V5의 사용자 인터페이스 개요입니다. 학생들은 이 Medbot STEM 랩의 활동을 통해 이러한 탭/버튼을 소개받게 됩니다. STEM 랩 전체에 걸쳐 이러한 탭/버튼에 대한 자세한 정보를 제공하는 링크도 제공됩니다.

- 이 탐색에 사용되는 VEXcode V5 지침:
- Drivetrain.driveFor (forward, 200, mm);
- wait (1, seconds);
-
지침에 대한 자세한 내용을 보려면 도움말을 선택한 다음 명령 옆에 있는 물음표 아이콘을 선택하여 자세한 정보를 확인하세요.

- 필요한 하드웨어, 엔지니어링 노트북 및 VEXcode V5를 다운로드하여 준비하십시오.
교사 팁
학생이 VEXcode V5를 처음 사용하는 경우, 탐색하는 동안 언제든지 튜토리얼을 참조할 수 있습니다. 튜토리얼은 도구 모음에 있습니다.

| 수량 | 필요한 재료 |
|---|---|
| 1 |
스피드봇 로봇 |
| 1 |
충전된 로봇 배터리 |
| 1 |
VEXcode V5 |
| 1 |
USB 케이블 (컴퓨터를 사용하는 경우) |
| 1 |
엔지니어링 노트 |
교사 팁
학생들에게 각 문제 해결 단계를 모델로 보여줍니다.
1단계: 탐사 준비
활동을 시작하기 전에 다음 각 항목을 준비하셨나요? 다음 각 사항을 확인하세요.
- 모터가 올바른포트에 연결되어 있습니까?
- 스마트 케이블모든 모터에 완전히되어 있습니까?
- 뇌로 켜져 있나요?
- 배터리충전되어 있나요?
2단계: 새 프로젝트 시작
프로젝트를 시작하려면 다음 단계를 완료하십시오.
-
파일 메뉴를 열고 예제 열기 를 선택합니다.

-
Speedbot (Drivetrain 2-motor, No Gyro) 템플릿 프로젝트를 선택하고 엽니다. 템플릿 프로젝트에는 Speedbot의모터 구성포함되어 있습니다. 템플릿을 사용하지 않으면 로봇이 프로젝트를 올바르게 실행하지 못합니다.

- Speedbot을 앞뒤로 움직이는 작업을 하게 되므로 프로젝트 이름을Drive지정합니다. 프로젝트 이름을 클릭하고 드라이브 입력한 후 저장을 선택합니다.

교사 팁
-
프로젝트 이름에는 단어 사이 또는 뒤에 공백이 포함될 수 있습니다.

- 학생들에게 프로젝트 이름에 자신의 이니셜이나 그룹 이름을 추가하도록 요청할 수 있습니다. 학생들에게 프로젝트를 제출하도록 요청할 경우, 프로젝트를 구분하는 데 도움이 됩니다.
- 이것은 학생들이 시도할 수 있는 첫 번째 프로그래밍 활동이므로, 단계를 모델링한 다음 학생들에게 동일한 작업을 완료하도록 요청해야 합니다. 그런 다음 교사는 학생들이 단계를 올바르게 따르고 있는지 모니터링해야 합니다.
- 학생들이 파일 메뉴에서 예제 열기를 선택했는지 확인하세요.
- 학생들이 Speedbot(구동계 2모터, 자이로 없음) 템플릿 프로젝트를 선택했는지 확인하세요.
- 학생들에게 예시 페이지에서 선택할 수 있는 항목이 여러 개 있다는 점을 알려줄 수 있습니다. 학생들이 다른 로봇을 만들고 사용하면서 다양한 템플릿을 사용할 기회를 얻게 됩니다.
-
프로젝트 이름드라이브이 이제 도구 모음 중앙의 창에 있는지 확인하세요.

교사 도구 상자
-
프로젝트 저장
-
VEXcode V5를 처음 열었을 때 창에 VEXcode 프로젝트라는 라벨이 붙어 있었다는 점을 지적하세요. VEXcode 프로젝트는 VEXcode V5를 처음 열었을 때 기본 프로젝트 이름입니다. 프로젝트 이름을 Drive로 변경하고 저장한 후 디스플레이가 업데이트되어 새 프로젝트 이름이 표시되었습니다. 도구 모음의 이 창을 사용하면 학생들이 올바른 프로젝트를 사용하고 있는지 쉽게 확인할 수 있습니다.
-
학생들에게 이제 첫 번째 프로젝트를 시작할 준비가 되었다고 말하세요. 학생들에게 몇 가지 간단한 단계만 따르면 Speedbot을 발전시킬 프로젝트를 만들고 실행할 수 있다고 설명하세요.
-
학생들에게 작업하는 동안 프로젝트를 저장하도록 상기시켜 주세요. VEX 라이브러리의C++섹션에서는 VEXcode V5의 저장 방법을 설명합니다.
교사 도구 상자
-
멈추고 토론하기
이 시점에서 잠시 멈춰 학생들에게 VEXcode V5에서 개별적으로 또는 그룹으로 새 프로젝트를 시작하기 위해 방금 완료한 단계를 검토하게 하는 것이 좋습니다. 학생들에게 그룹이나 전체 학급에서 공유하기 전에 개인적으로 생각해 보라고 하세요.
3단계: 전진하세요
이제 앞으로 나아갈 수 있도록 로봇 프로그래밍을 시작할 준비가 되었습니다!
-
프로그래밍을 시작하기 전에 명령이 무엇인지 이해해야 합니다. 지침에는 세 가지 부분이 있습니다. 지침에 대한 자세한 내용은 "구문 규칙 및 지침 - VEXcode V5" 문서를 참조하십시오.

-
프로젝트에 지침을 추가하면 프로젝트가 다음과 같이 표시됩니다.
int main () { //로봇 구성 초기화. 삭제하지 마세요! vexcodeInit (); //프로젝트 코드 시작 Drivetrain.driveFor (forward, 100, mm); }
교사 팁
명령어를 입력하기 시작하면 자동완성 기능이 나타날 수 있습니다. "위쪽" 및 "아래쪽" 키를 사용하여 원하는 이름을 선택한 다음 키보드의 "Tab" 또는 (Enter/Return) 키를 눌러 선택합니다. 이 기능에 대한 자세한 내용은C++문서를 확인하세요.

-
슬롯 아이콘을 선택하여 로봇 브레인에서 사용 가능한 8개의 슬롯 중 하나를 선택하고 슬롯 1을 선택합니다.

-
마이크로 USB 케이블을 사용하여 V5 Robot Brain을 컴퓨터에 연결하고 V5 Robot Brain의 전원을 켭니다. 연결이 성공적으로 이루어지면 도구 모음의 Brain 아이콘이 녹색로 바뀝니다.

-
다운로드선택하여 프로젝트를 Brain에 다운로드하세요.

교사 도구 상자
-
학생들에게 로봇 브레인에서 USB 케이블을 분리하라고 상기시킵니다. 프로젝트를 실행하는 동안 로봇을 컴퓨터에 연결하면 로봇이 연결 케이블을 잡아당길 수 있습니다.
교사 도구 상자
-
멈추고 토론하기
학생들에게 이 프로젝트를 다운로드하여 Speedbot에 실행하면 어떤 일이 일어날지 예측해 보라고 합니다. 학생들에게 예측 결과를 공학 노트에 기록하라고 지시하세요. 시간이 허락한다면 각 그룹에게 예측을 공유하도록 요청하세요.
-
로봇 브레인의 화면을 보고 프로젝트가 다운로드되었는지 확인하세요(C++). 프로젝트 이름 드라이브는 슬롯 1에 나열되어야 합니다.

교사 도구 상자
-
모델 우선
-
모든 학생이 한꺼번에 시도하기 전에, 먼저 학급 앞에서 프로젝트를 진행하는 모델을 만드세요. 학생들을 한곳에 모으고, 스피드봇이 바닥에 놓여 있다면 움직일 수 있을 만큼 충분한 공간을 남겨두세요.
-
학생들에게 이제 그들이 프로젝트를 진행할 차례라고 말하세요. 스피드봇들이 서로 부딪히지 않고 이동할 수 있는 길이 확보되어 있는지 확인하세요.
-
로봇에서 프로젝트를 선택했는지 확인한 다음 로봇 브레인에서실행버튼을 눌러 로봇에서 프로젝트를 실행(C++)합니다. 첫 번째 프로젝트를 생성하신 것을 축하드립니다!

4단계: 후진 주행
로봇이 앞으로 주행하도록 프로그래밍했으므로 이제 반대로 주행하도록 프로그래밍하겠습니다.
-
드라이브 명령의 매개 변수를 반대로 변경하여 프로젝트가 다음과 같이 표시되도록 합니다.
int main () { //로봇 구성 초기화. 삭제하지 마세요! vexcodeInit (); //프로젝트 코드 시작 Drivetrain.driveFor (reverse, 100, mm); } -
드라이브에서 역방향으로 변경할 프로젝트 이름을 선택합니다 .

-
새 슬롯을 선택하려면 슬롯 아이콘을 선택하십시오. 슬롯 2를 선택합니다.

-
프로젝트를 다운로드하세요(C++).

-
로봇 브레인의 화면을 보고 프로젝트가 다운로드되었는지 확인하세요(C++). 프로젝트 이름 역방향은 슬롯 2에 나열되어야 합니다.

-
로봇에서 프로젝트를 선택했는지 확인한 다음 로봇 브레인에서실행버튼을 눌러 로봇에서 프로젝트를 실행(C++)합니다.

교사 도구 상자
-
4단계 완료
-
driveFor명령을forward에서reverse로 변경하려면 첫 번째 매개변수를 -100으로 변경하기만 하면 됩니다. 이렇게 하면 구동계의 모터가 반대 방향으로 움직입니다.
-
mm 수는 변경할 수 있지만, 이 예에서는 이전 단계에서 설정한 100mm로 두겠습니다.
-
프로젝트를 실행하기 전에 로봇 브레인에서 USB 케이블을 분리하도록 상기시켜 주세요.
-
학생들에게 작업하는 동안 프로젝트를 저장하도록 상기시켜 주세요. VEX 라이브러리의C++섹션에서는 VEXcode V5의 저장 방법을 설명합니다.
5단계: 기다린 후 후진 주행
이제 로봇이 앞으로 주행하도록 프로그래밍한 다음 역으로 대기 지침을 추가하여 로봇이 역으로 주행하기 전에 일정 시간을 기다리도록 할 수 있습니다.
-
Drive for 명령 앞에 Wait 명령을 추가합니다. Drive for 명령과 일치하도록 Wait가 들여쓰기되고 모든 명령이 중괄호 안에 있는지 확인하십시오. 이렇게 하면 로봇이 역주행하기 전에 3초 동안 기다리라는 메시지가 표시됩니다.
wait (3, seconds); Drivetrain.driveFor (forward, 100, mm); -
프로젝트 이름을 선택하여 역방향에서 WaitReverse로 변경합니다.

-
새 슬롯을 선택하려면 슬롯 아이콘을 선택하십시오. 슬롯 3을 선택합니다.
-
프로젝트를 다운로드하세요(C++).

-
로봇 브레인의 화면을 보고 프로젝트가 다운로드되었는지 확인하세요(C++). 프로젝트 이름 WaitReverse는 Slot 3에 나열되어야 합니다.

-
프로젝트가 선택되었는지 확인한 다음실행버튼을 눌러 로봇에서 프로젝트를 실행(C++)합니다.

교사 도구 상자
-
5단계 완료
-
대기 명령을 사용해도 프로젝트는 종료되지 않고 로봇의 움직임만 일시 정지됩니다.
-
학생들이 컴퓨터를 사용하는 경우, 프로젝트를 실행하기 전에 Robot Brain에서 USB 케이블을 분리하도록 상기시켜 주세요.
-
학생들에게 작업하는 동안 프로젝트를 저장하도록 상기시켜 주세요. VEX 라이브러리의C++섹션에서는 VEXcode V5의 저장 방법을 설명합니다.
6단계: 농구 훈련 챌린지를 완료하세요!

농구 훈련 챌린지 레이아웃
농구 훈련 챌린지에서 로봇은 서로 다른 거리에서 일련의 선을 탐색할 수 있어야 합니다. 로봇은 시작 위치에서 10cm 떨어진 첫 번째 라인으로 이동한 다음 1초 동안 기다렸다가 같은 라인으로 되돌아갑니다. 그런 다음 로봇은 두 번째 라인까지 20cm 앞으로 이동하여 작업을 반복하고 1초간 기다린 다음 원래 시작 라인까지 뒤로 이동합니다. 로봇은 40cm 거리를 두고 세 번째 줄까지 전진한 후 1초간 기다린 후 마지막으로 시작선으로 돌아와 챌린지를 완료합니다.
로봇을 프로그래밍하기 전에 엔지니어링 노트북에 로봇의 경로와 동작을 계획하세요.
농구 챌린지를 완료한 후에는 전진 및 후진 동작을 추가 로봇 동작과 결합하여 더욱 고급 챌린지를 완료할 수 있습니다.
프로그래밍할 때 1cm = 10mm라는 점을 명심하세요.
교사 도구 상자
-
솔루션
아래에서 샘플 솔루션을 확인하세요.
int main() {
// 로봇 구성 초기화. 제거하지 마세요!
vexcodeInit();
// 프로젝트 코드 시작
// 10cm 전진
Drivetrain.driveFor(forward, 100, mm);
// 1초간 대기
wait(1, seconds);
// 출발선으로 후진
Drivetrain.driveFor(reverse, 100, mm);
// 20cm 전진
Drivetrain.driveFor(forward, 200, mm);
// 1초간 대기
wait(1, seconds);
// 출발선으로 후진
Drivetrain.driveFor(reverse, 200, mm);
// 40cm 전진
Drivetrain.driveFor(forward, 400, mm);
// 1초간 대기
wait(1, seconds);
// 출발선으로 후진
Drivetrain.driveFor(reverse, 400, mm);
}
교사 도구 상자
-
멈추고 토론하기
학생들에게 전체 학급에서 논의하기 전에 짝을 지어 해결책을 공유하도록 요청하세요. 다음과 같은 질문을 통해 토론을 촉진하세요.
-
이 챌린지를 프로그래밍하면서 어려움을 겪었나요?
-
프로젝트를 기반으로 로봇이 예상한 대로 동작했나요? 왜 그럴까? 아니면 왜 그렇지 않을까?
-
도전을 다시 할 수 있다면 다르게 했을 것이 있나요?