Skip to main content

레슨 2: [기다릴 때까지] 블록 사용

이 수업에서는 범퍼 센서와 [대기 시간] 블록을 사용하여 프로젝트를 만듭니다. 미니 챌린지에서는 이러한 기술을 적용하여 벽 미로의 시작 부분부터 'A' 문자까지 탐색하게 됩니다.

VR 로봇이 벽 바로 앞에 있는 벽 미로 놀이터의 측면 모습입니다. 벽이 3차원이고 로봇이 벽과 충돌할 수 있다는 것을 보여줍니다.

학습 성과

  • 대기하지 않는 블록의 경우 블록의 동작이 아직 완료되지 않았더라도 스택이 계속 실행된다는 것을 확인합니다.
  • 대기 블록은 해당 블록의 동작이 완료될 때까지 스택을 일시 중지한다는 것을 식별합니다.
  • 프로젝트 실행의 하이라이트가 대기 블록과 대기하지 않는 블록을 시각화한다는 것을 식별합니다.
  • [Wait until] 블록이 부울 값을 허용하는 제어 블록인지 확인하세요.
  • [대기까지] 블록은 부울 조건을 반복적으로 확인하고 조건이 TRUE를 보고할 때까지 다음 블록으로 이동하지 않는다는 점을 식별합니다.
  • [대기까지] 블록이 대기하지 않는 블록(예: 드라이브)과 함께 사용되어 센서 상태를 확인하는지 확인합니다.
  • [Wait until] 블록에서 <Pressing bumper> 블록이 TRUE 또는 FALSE 값을 보고하는지 확인합니다.
  • [Drive for] 및 [Turn for] 블록이 대기 중이거나 대기하지 않는 특수 블록인지 확인하세요.
  • 범퍼 센서가 눌릴 때까지 VR 로봇이 계속 앞으로 움직이는 프로젝트를 만드는 방법을 설명하세요.

프로젝트 이름 지정 및 저장

  • VEXcode VR에서 새 프로젝트를 시작하고 프로젝트 이름을 Unit4Lesson2로 지정합니다.
VEXcode VR 도구 모음 중앙에 있는 프로젝트 이름 상자는 빨간색 상자로 강조 표시되어 있으며, 플레이그라운드 선택 버튼 왼쪽에 있습니다.

[기다릴 때까지] 블록

[Wait until] 블록은 부울 조건을 허용하는 제어 블록입니다. [대기할 때까지] 블록은 부울 조건을 반복적으로 확인하고 프로젝트 흐름을 제어합니다. [대기까지] 블록의 조건이 TRUE로 보고될 때까지 프로젝트는 스택의 다음 블록으로 이동하지 않습니다. [대기] 블록은 [운전]이나 [회전]과 같은 대기하지 않는 블록과 함께 사용됩니다.

귀하의 정보를 위해

대기하지 않는 블록과 대기하는 블록은 다음 블록이 동작을 시작하는 시점을 결정합니다. [Drive for] 및 [Turn for]와 같은 대기 블록은 스택의 다음 블록으로 이동하기 전에 동작을 완료합니다. [Drive], [Turn]과 같은 대기하지 않는 블록은 대기하지 않는 블록의 동작이 완료되지 않았더라도 스택의 다음 블록으로 계속 이동합니다.

[운전] 및 [회전]과 같은 특정 블록은 대기 블록이거나 대기하지 않는 블록일 수 있습니다. 블록의 화살표를 선택하면 블록이 대기 블록에서 대기하지 않는 블록으로 바뀝니다.

블록 드라이브는 블록 오른쪽에 화살표가 닫혀 있고 열려 있는 모습으로 표시됩니다. 위쪽의 블록 드라이브에는 Drive forward for 200mm라고 적혀 있습니다. 아래쪽에는 같은 블록이 확장되어 200mm 전진하고 기다리지 마십시오라는 문구가 적혀 있습니다.

스위치 블록 사용

Switch 비대기 블록은 블록의 끝에 "wait=False" 매개변수를 추가합니다. "wait=False" 은 블록이 기다리지 않고 스택의 다음 블록으로 계속 이동하도록 지시하는 Python 명령어입니다.

동등한 스위치 블록은 대기 명령과 대기하지 않는 명령으로 명령을 구동하는 것으로 표시됩니다. 맨 위에 있는 Switch 블록의 Python 명령어는 drivetrain dot drive_for (FORWARD, 200, MM)..을 읽습니다. 하단에서 동일한 명령은 드라이브트레인 dot drive _ for (FORWARD, 200, MM, wait = false)를 읽도록 확장되었습니다.

  • [드라이브] 대기 중이 아닌 블록을 작업 공간으로 끌어다 놓습니다.

    시작 블록에 드라이브 블록이 부착되어 있고 앞으로 설정된 새로운 VEXcode VR 프로젝트입니다.
  • [운전] 블록 아래에 [대기] 블록을 붙입니다.

    스택의 맨 아래에 블록을 추가할 때까지 기다리는 동일한 프로젝트입니다. Wait until 블록의 매개변수가 비어 있습니다.
  • [Wait until] 블록은 부울 조건을 허용합니다. 이 프로젝트에서는 범퍼 센서를 사용하여 벽 미로 놀이터을 주행합니다. <Pressing bumper> 부울 블록을 [대기] 블록으로 끌어다 놓습니다.

    Wait until 블록의 매개변수에 Bumper pressed 블록을 추가한 동일한 프로젝트입니다. 이 프로젝트는 이제 시작 시 전진하고 왼쪽 범퍼가 눌릴 때까지 기다리라는 문구가 표시됩니다.
  • [운전 중지] 블록을 끌어서 프로젝트에 추가합니다.

    대기 블록 아래에 정지 운전 블록을 추가한 동일한 프로젝트입니다. 이 프로젝트는 이제 "시작할 때 앞으로 주행하고 왼쪽 범퍼가 눌릴 때까지 기다린 다음 주행을 멈춥니다"로 변경되었습니다.
  • 아직 열려 있지 않으면 Wall Maze Playground 을 실행하고 프로젝트를 실행하세요.
  • VR 로봇이 벽 미로의 시작 부분에서 주행하다가 범퍼 센서가 벽에 닿으면 멈추는 모습을 지켜보세요.
  • [Drive] 블록은 <Pressing bumper> 블록으로 범퍼 센서의 상태를 확인하면서 VR 로봇이 계속해서 전진할 수 있도록 해줍니다. <Pressing bumper> 이 TRUE로 보고되면 VR 로봇은 스택의 다음 블록으로 이동하여 운전을 멈춥니다.

    이 수업의 VEXcode VR 프로젝트를 프로젝트 흐름을 보여주기 위해 분해한 것입니다. 시작 시 블록 다음에 전진 블록이 옵니다. 금색 화살표는 Wait until left bumper pressed 블록의 드라이브 포워드 블록에서 아래쪽을 가리킵니다. 블록 오른쪽에는 원형 운동을 나타내는 2개의 빨간색 곡선 화살표와 로봇이 앞으로 움직이고 범퍼 스위치를 누르지 않았을 때 발생하는 상황을 보여주는 "누르지 않음(거짓)"이라는 단어가 있습니다. 대기 블록 아래에는 정지 주행 블록을 가리키는 녹색 화살표가 있고, "누름(참)"이라는 단어가 있는데, 이는 범퍼 스위치를 누르면 프로젝트가 정지 주행 블록으로 이동함을 나타냅니다.

    귀하의 정보를 위해

    대기 블록과 대기하지 않는 블록의 시각화를 따라가려면 VEXcode VR의 코드 실행 강조 표시 기능을 살펴보세요. 이 프로젝트가 시작되면 조건이 충족될 때까지 [Waiting until] 블록 주위에 녹색 강조 표시가 나타납니다. 이는 [Wait until] 블록이 대기 블록이기 때문입니다. 녹색 강조 표시는 대기하지 않는 블록을 건너뛰도록 표시되는데, 이러한 명령은 빠르게 실행되기 때문입니다.

    이 수업의 VEXcode VR 프로젝트에서는 Wait until 블록 주위에 빨간색 콜아웃 상자가 있어 대기 블록임을 나타냅니다.

     

    스위치 블록 사용 

    이것은 <Bumper pressed>을 포함하는 [Wait until] 명령을 포함하는 스위치 블록입니다.  부울 리포터.

    위와 같은 VEXcode VR 프로젝트이지만 Wait until 블록이 Switch 블록으로 바뀌었습니다. Switch 블록의 Python 명령은 첫 번째 줄에 while not left_bumper.pressed():를 읽습니다. 그런 다음 Python 블록 아래에 들여쓰기로 wait(5, msec)을 읽습니다.

    while not left_bumper.pressed():은 현재 왼쪽 범퍼가 눌리고 있는지 확인하는 Python 명령어입니다.

    wait (5, MSEC)은 5밀리초(MSEC) 동안 검사 실행을 일시 중지하는 Python 명령어입니다. 따라서 이 프로젝트는 5MSEC마다 왼쪽 범퍼가 눌렸는지 여부를 확인합니다. 이 코드 줄은 첫 번째 코드 줄 바로 아래에 들여쓰기되어 있는데, 그 이유는 이 명령이 조건(이 경우 왼쪽 범퍼가 눌림)이 충족될 때까지 반복되는 동작이기 때문입니다.

    VEXcode VR에서는 wait 명령이 항상 조건 루프와 함께 추가됩니다. 대기 명령의 목적은 VEXcode VR 플랫폼의 웹 기반 특성으로 인해 VEXcode VR이 의도한 대로 프로젝트를 제대로 실행할 수 있도록 하는 것입니다. 조건 루프를 사용할 때는 wait 명령을 삭제해서는 안 됩니다. 프로젝트가 의도한 대로 실행되지 않을 수 있기 때문입니다.

    왼쪽 범퍼를 누르면 로봇의 주행이 멈춥니다.

이 강의의 나머지 부분을 계속하려면 다음 버튼을 선택하세요.