Skip to main content

프로그래밍 드라이브 포워드 및 리버스 - C++

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

이 탐구를 통해 학생들에게 기본적인 전진, 후진, 대기 프로그래밍 동작을 소개합니다. 이러한 기본 기술은 학생들이 Speedbot을 사용하여 병원 바닥을 탐색할 때 이 STEM 랩의 마지막에 있는 Automed Challenge에서 성공하는 데 도움이 될 것입니다.

V5 Speedbot(구동계 2모터, 자이로 없음) 템플릿 프로젝트를 사용하면 학생들은 단 하나의 명령어만으로 Speedbot이 전진하도록 프로그래밍할 수 있습니다.

스피드봇이 움직일 준비가 되었습니다!

이 탐험을 통해 간단한 이동을 위해 스피드봇을 프로그래밍할 수 있는 도구를 얻을 수 있습니다. 이 활동이 끝나면 전진, 후진 및 대기 동작을 사용하여 농구 훈련 챌린지에 참여하게 됩니다.

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

다음은 VEXcode V5의 사용자 인터페이스 개요입니다. 학생들은 이 Medbot STEM 랩의 활동을 통해 이러한 탭/버튼을 소개받게 됩니다. STEM 랩 전체에 걸쳐 이러한 탭/버튼에 대한 자세한 정보를 제공하는 링크도 제공됩니다.

VEXcode V5 인터페이스를 보여주는 스크린샷입니다. 도구 모음은 화면 상단에 위치하고, 드래그 앤 드롭 메뉴는 왼쪽 아래에, C++ 프로그래밍 창은 오른쪽 아래에 있습니다. 프로그래밍 창 아래에 '오류' 창이 있습니다.

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

    Drive For 명령에 대한 VEXcode 도움말 메뉴. 오른쪽 상단에 있는 도움말 아이콘이 강조 표시되어 도움말 메뉴를 열기 위해 선택할 항목을 보여줍니다.

     

  • 필요한 하드웨어, 엔지니어링 노트북 및 VEXcode V5를 다운로드하여 준비하십시오.

교사 팁 아이콘 교사 팁

학생이 VEXcode V5를 처음 사용하는 경우, 탐색하는 동안 언제든지 튜토리얼을 참조할 수 있습니다. 튜토리얼은 도구 모음에 있습니다.

파일 메뉴 오른쪽에 빨간색 상자로 표시된 튜토리얼 버튼이 있는 VEXcode V5 도구 모음입니다.

필요한 재료:
수량 필요한 재료
1

스피드봇 로봇

1

충전된 로봇 배터리

1

VEXcode V5

1

USB 케이블 (컴퓨터를 사용하는 경우)

1

엔지니어링 노트

교사 팁 아이콘 교사 팁

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

1단계: 탐사 준비

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

2단계: 새 프로젝트 시작

프로젝트를 시작하려면 다음 단계를 완료하십시오.

 

이름 바꾸기 드롭다운 메뉴는 V5 VEXcode 툴바의 프로젝트 이름 버튼에서 열립니다. 프로젝트 이름이 '드라이브' 로 변경되고 있습니다.

 

 

교사 팁 아이콘 교사 팁

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

    프로젝트 이름 버튼이 빨간색 상자로 강조 표시된 V5 VEXcode 도구 모음입니다. 프로젝트 이름은 'Drive Forward'로 설정되었습니다.

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

    프로젝트 이름 '드라이브' 를 표시하는 VEXcode V5 도구 모음.

교사 도구 상자 아이콘 교사 도구 상자 - 프로젝트 저장

  • VEXcode V5를 처음 열었을 때 창에 VEXcode 프로젝트라는 라벨이 붙어 있었다는 점을 지적하세요. VEXcode 프로젝트는 VEXcode V5를 처음 열었을 때 기본 프로젝트 이름입니다. 프로젝트 이름을 Drive로 변경하고 저장한 후 디스플레이가 업데이트되어 새 프로젝트 이름이 표시되었습니다. 도구 모음의 이 창을 사용하면 학생들이 올바른 프로젝트를 사용하고 있는지 쉽게 확인할 수 있습니다.

  • 학생들에게 이제 첫 번째 프로젝트를 시작할 준비가 되었다고 말하세요. 학생들에게 몇 가지 간단한 단계만 따르면 Speedbot을 발전시킬 프로젝트를 만들고 실행할 수 있다고 설명하세요.

  • 학생들에게 작업하는 동안 프로젝트를 저장하도록 상기시켜 주세요. VEX 라이브러리의C++섹션에서는 VEXcode V5의 저장 방법을 설명합니다.

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

이 시점에서 잠시 멈춰 학생들에게 VEXcode V5에서 개별적으로 또는 그룹으로 새 프로젝트를 시작하기 위해 방금 완료한 단계를 검토하게 하는 것이 좋습니다. 학생들에게 그룹이나 전체 학급에서 공유하기 전에 개인적으로 생각해 보라고 하세요.

3단계: 전진하세요

이제 앞으로 나아갈 수 있도록 로봇 프로그래밍을 시작할 준비가 되었습니다!

  • 프로그래밍을 시작하기 전에 명령이 무엇인지 이해해야 합니다. 지침에는 세 가지 부분이 있습니다. 지침에 대한 자세한 내용은 "구문 규칙 및 지침 - VEXcode V5" 문서를 참조하십시오.

    명령의 구성 요소가 레이블로 표시된 명령용 C + + 드라이브. 드라이브트레인은 장치로 레이블이 지정되고, 의 드라이브는 명령으로 레이블이 지정되며, 포워드, 100 및 mm는 매개변수로 레이블이 지정됩니다.

  • 프로젝트에 지침을 추가하면 프로젝트가 다음과 같이 표시됩니다. 

    int main () {
      //로봇 구성 초기화. 삭제하지 마세요!
      vexcodeInit ();
        //프로젝트 코드 시작
    
        Drivetrain.driveFor (forward, 100, mm);
    
    }

교사 팁 아이콘 교사 팁

명령어를 입력하기 시작하면 자동완성 기능이 나타날 수 있습니다. "위쪽" 및 "아래쪽" 키를 사용하여 원하는 이름을 선택한 다음 키보드의 "Tab" 또는 (Enter/Return) 키를 눌러 선택합니다. 이 기능에 대한 자세한 내용은C++문서를 확인하세요.

사용자가 C++ 명령을 입력하고 Drivetrain.d를 입력하기 시작하면 프로그램에서 자동완성 옵션을 제안하는 드롭다운 메뉴가 열립니다.

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

    슬롯 메뉴가 있는 VEXcode V5 도구 모음이 프로젝트 이름의 왼쪽에 열립니다. 드롭다운 메뉴에는 1부터 8까지 사용 가능한 모든 슬롯이 나열됩니다. 첫 번째 슬롯은 빨간색 상자로 강조 표시됩니다.

     

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

    컨트롤러 버튼 오른쪽의 녹색 뇌 아이콘 주위에 빨간색 상자가 있는 VEXcode V5 도구 모음.

     

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

    Brain 및 Run 버튼 사이에 있는 다운로드 아이콘 주위에 빨간색 상자가 있는 VEXcode V5 도구 모음.

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

  • 학생들에게 로봇 브레인에서 USB 케이블을 분리하라고 상기시킵니다. 프로젝트를 실행하는 동안 로봇을 컴퓨터에 연결하면 로봇이 연결 케이블을 잡아당길 수 있습니다.

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

학생들에게 이 프로젝트를 다운로드하여 Speedbot에 실행하면 어떤 일이 일어날지 예측해 보라고 합니다. 학생들에게 예측 결과를 공학 노트에 기록하라고 지시하세요. 시간이 허락한다면 각 그룹에게 예측을 공유하도록 요청하세요.

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

    V5 브레인 홈 화면은 드라이브 아이콘 바로 아래의 왼쪽 하단 모서리에 있는 슬롯 1에 드라이브 프로그램을 표시합니다.

교사 도구 상자 아이콘 교사 도구 상자 - 모델 우선

  • 모든 학생이 한꺼번에 시도하기 전에, 먼저 학급 앞에서 프로젝트를 진행하는 모델을 만드세요. 학생들을 한곳에 모으고, 스피드봇이 바닥에 놓여 있다면 움직일 수 있을 만큼 충분한 공간을 남겨두세요.

  • 학생들에게 이제 그들이 프로젝트를 진행할 차례라고 말하세요. 스피드봇들이 서로 부딪히지 않고 이동할 수 있는 길이 확보되어 있는지 확인하세요.

  • 로봇에서 프로젝트를 선택했는지 확인한 다음 로봇 브레인에서실행버튼을 눌러 로봇에서 프로젝트를 실행(C++)합니다. 첫 번째 프로젝트를 생성하신 것을 축하드립니다!

    V5 드라이브 프로그램이 열리고 맨 왼쪽의 실행 버튼 주위에 빨간색 상자가 있는 두뇌 화면. Run 오른쪽에는 Timed Run, Match 및 Wiring 버튼이 있습니다.

4단계: 후진 주행

로봇이 앞으로 주행하도록 프로그래밍했으므로 이제 반대로 주행하도록 프로그래밍하겠습니다.

  • 드라이브 명령의 매개 변수를 반대로 변경하여 프로젝트가 다음과 같이 표시되도록 합니다.

    int main () {
      //로봇 구성 초기화. 삭제하지 마세요!
      vexcodeInit ();
        //프로젝트 코드 시작
    
        Drivetrain.driveFor (reverse, 100, mm);
    
    }
  • 드라이브에서 역방향으로 변경할 프로젝트 이름을 선택합니다 .

    VEXcode V5의 프로젝트 이름 대화 상자는 Reverse를 읽고 슬롯 1이 선택되었음을 보여줍니다.

     

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

    VEXcode V5의 슬롯 선택은 슬롯 2가 선택된 상태에서 열리고 빨간색 상자로 강조 표시됩니다.

     

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

    녹색 두뇌 아이콘 왼쪽과 실행 및 중지 버튼 오른쪽에 빨간색 상자가 강조 표시된 VEXcode V5의 도구 모음에서 다운로드 버튼.

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

    V5 Brain 홈 화면은 슬롯 1의 드라이브 프로젝트 옆에 있는 하단 행의 왼쪽에서 두 번째 아이콘인 슬롯 2의 역방향 프로젝트를 표시합니다.

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

    역방향 프로젝트가 열리고 실행 버튼이 맨 왼쪽의 빨간색 상자에 강조 표시된 V5 뇌 화면. Run 오른쪽에는 Timed Run, Match 및 Wiring 버튼이 있습니다.

교사 도구 상자 아이콘 교사 도구 상자 - 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로 변경합니다.

    VEXcode V5의 프로젝트 이름 대화 상자에는 Wait Reverse가 표시되고 슬롯 2가 선택되어 있습니다.

  • 새 슬롯을 선택하려면 슬롯 아이콘을 선택하십시오. 슬롯 3을 선택합니다.

    VEXcode V5 도구 모음의 슬롯 선택에는 슬롯 3이 선택되고 빨간색 상자로 강조 표시됩니다.

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

    VEXcode V5 도구 모음의 다운로드 버튼은 녹색 두뇌 아이콘의 오른쪽과 실행 및 중지 버튼의 왼쪽에 있는 빨간색 상자에 강조 표시됩니다.

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

    V5 Brain Home 화면은 하단 행의 세 번째 아이콘인 슬롯 3에 Wait Reverse 프로젝트를 표시합니다.

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

    기다림 역방향 프로젝트가 열리고 실행 버튼이 맨 왼쪽의 빨간색 상자에 강조 표시된 V5 두뇌 화면. Run 오른쪽에는 Timed Run, Match 및 Wiring 버튼이 있습니다.

교사 도구 상자 아이콘 교사 도구 상자 - 5단계 완료

  • 대기 명령을 사용해도 프로젝트는 종료되지 않고 로봇의 움직임만 일시 정지됩니다.

  • 학생들이 컴퓨터를 사용하는 경우, 프로젝트를 실행하기 전에 Robot Brain에서 USB 케이블을 분리하도록 상기시켜 주세요.

  • 학생들에게 작업하는 동안 프로젝트를 저장하도록 상기시켜 주세요. VEX 라이브러리의C++섹션에서는 VEXcode V5의 저장 방법을 설명합니다.

6단계: 농구 훈련 챌린지를 완료하세요!

농구 훈련을 위한 설정은 왼쪽에 시작 선이 있는 4개의 선과 10cm, 20cm, 40cm의 선을 보여줍니다. V5 로봇은 스타트 라인에서 앞바퀴로 시작할 준비가 되어 있습니다.

농구 훈련 챌린지 레이아웃

농구 훈련 챌린지에서 로봇은 서로 다른 거리에서 일련의 선을 탐색할 수 있어야 합니다. 로봇은 시작 위치에서 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);

}

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

학생들에게 전체 학급에서 논의하기 전에 짝을 지어 해결책을 공유하도록 요청하세요. 다음과 같은 질문을 통해 토론을 촉진하세요.

  • 이 챌린지를 프로그래밍하면서 어려움을 겪었나요?

  • 프로젝트를 기반으로 로봇이 예상한 대로 동작했나요? 왜 그럴까? 아니면 왜 그렇지 않을까?

  • 도전을 다시 할 수 있다면 다르게 했을 것이 있나요?