두뇌 화면에 두 번째 버튼 추가 - 블록 기반
교사 도구 상자
-
이 활동의 목적
이제 학생들은 뇌의 화면을 하나의 큰 버튼처럼 다루는 경험을 쌓았으므로, 화면을 두 개의 버튼으로 바꿀 수 있습니다. 이 활동에서는 학생들에게 중첩된 [If then else] 블록을 사용하여 조건문을 보다 효과적으로 관리하고 그렇게 하는 기본 논리를 소개할 것입니다. 학생들은 먼저 화면을 눌러 로봇을 좌우로 돌리는 프로젝트를 만드는 과정을 안내받습니다. 하지만 로봇을 왼쪽으로 돌렸던 버튼이 오른쪽으로 돌도록, 그리고 그 반대로 버튼을 바꾸라는 요청을 받습니다.
이 활동에서 사용되는 [If then]및[If then else] 블록이나 기타 블록에 대한 자세한 내용은 VEXcode V5 내의 도움말 정보를 참조하세요. 이 내장된 도움말 도구에 대한 자세한 내용을 보려면 여기를 클릭하세요.
이 활동에서 학생들이 할 일은 다음과 같습니다.
-
StopOrDrive프로젝트와 픽셀 단위로 나타낸 뇌 화면의 레이아웃을 검토합니다.
-
프로그래밍 추론에 대한 지침을 받으면서 새로운LeftOrRight프로젝트를 빌드합니다.
-
화면의 버튼이 반대로 작동하도록 프로젝트를 수정합니다.
-
학습 확장: 화면을 두 개의 버튼으로 나누어 누르면 로봇이 좌우로 회전합니다.
| 수량 | 필요한 재료 |
|---|---|
| 1 |
VEX V5 교실 스타터 키트(최신 펌웨어 포함) |
| 1 |
VEXcode V5(최신 버전, Windows, macOS, Chromebook) |
| 1 |
엔지니어링 노트 |
| 1 |
이전 재생 페이지의 StopOrDrive 프로젝트 |
뇌의 화면에는 두 개 이상의 버튼이 있을 수 있습니다.
이 활동을 통해 로봇이 뇌 화면의 어느 쪽을 누르는지에 따라 앞으로 주행하고 왼쪽이나 오른쪽으로 회전하도록 프로그래밍할 수 있습니다.
이 활동 중에 필요한 세 가지 추가 블록 유형은 다음과 같습니다.
VEXcode V5 내부의 도움말 정보를 사용하여 블록에 대해 알아볼 수 있습니다. 도움말 기능 사용에 대한 지침은 도움말 사용 튜토리얼을 참조하세요.
1단계: StopOrDrive 프로젝트를 검토하는 것으로 시작하겠습니다.
StopOrDrive 프로젝트에서는 화면을 누르면 Clawbot이 멈추고, 누르면 앞으로 주행하도록 했습니다.
전체 화면은 하나의 큰 버튼이었지만, 다음 프로젝트에서는 화면의 절반을 하나의 버튼으로, 나머지 절반을 다른 버튼으로 만들고 싶습니다.
화면을 두 개의 버튼으로 나누려면 화면 레이아웃에 대해 자세히 알아야 합니다.
- 열의 수가 왼쪽에서 오른쪽으로 증가합니다. 열 수는 48개이고 화면 너비는 480픽셀입니다.
- 공학 노트에 화면의 x 값이 왼쪽에서 오른쪽으로 측정된 픽셀 수와 같다고 적어 둡니다.
- 화면 중앙의 x값은 얼마입니까? 이 활동에서는 왼쪽과 오른쪽 버튼만 있으면 되기 때문에 x축에만 집중할 수 있습니다.
교사 도구 상자
-
답변
화면 중앙의 x 값은 화면 너비의 절반(픽셀)과 같습니다. 따라서 중심점의 x값은 240입니다. 학생들은 화면을 왼쪽이나 오른쪽으로 눌렀는지에 대한 조건을 프로그래밍하기 위해 이 숫자가 필요합니다. 따라서 모든 값이 올바른지 꼭 확인하세요.
앞으로 Rethink 섹션의 사용자 인터페이스 챌린지에서는 학생들에게 지금까지 배운 내용을 적용하여 화면에 4개의 버튼을 만들어야 합니다. 그러기 위해서는 x값과 y값이 모두 필요합니다.
교사 팁
이 지침에서는 필요에 따라 학생들이 VEXcode V5 내의 튜토리얼을 사용하도록 안내합니다. 추가 지원이 필요한 경우VEX 라이브러리의 보충 도움말 문서를 참조하세요.
2단계: 두 개의 버튼에 대한 프로그래밍
- StopOrDriveLeftOrRight프로젝트로 저장합니다.
- 프로젝트 열기, 이름 지정 또는 저장에 도움이 필요한 경우 VEXcode V5의 튜토리얼을 시청하세요.
- 아래에서 프로젝트를 빌드하세요. 화면을 누르면 Clawbot이 왼쪽이나 오른쪽으로 회전합니다.

교사 도구 상자
-
중첩된 If Then Else 블록을 사용하는 이유는 무엇입니까?
프로젝트의 골격(제어 블록만 해당)에는 중첩 블록이 포함됩니다. [Forever] 루프 내부의 [If then else] 블록과 [If then else] 블록 내부의 [If then else] 블록이 포함됩니다. 이 방법은 필요 이상으로 복잡해 보일 수 있는데, 대신 순차적인 [If then] 블록을 사용할 수 있기 때문입니다. 하지만 연속적인 [If then] 블록을 사용하는 것은 좋은 프로그래밍 방식이 아닙니다.

왼쪽의 거부된 프로젝트는 LeftOrRight 프로젝트의 순차적 조건부 버전입니다. 화면을 누르고 x값이 240보다 작으면 클로봇이 왼쪽으로 회전합니다. 화면을 누르고 x값이 240보다 크면 클로봇이 오른쪽으로 회전합니다. 이 프로젝트의 문제점은 두 가지 조건이 모두 참일 위험이 있다는 것입니다. 순차적인 [If then] 블록을 사용할 때마다 프로젝트 내에서 버그가 발생할 위험이 있습니다. 왜냐하면 참인 조건문이 두 개 이상 있을 수 있기 때문입니다. 버그로 인해 예측이 불가능합니다.
가운데에는 LeftOrRight 프로젝트의 골격이 있고, 오른쪽에는 조건문과 Drivetrain 블록이 삽입된 프로젝트가 나와 있습니다. 이 버전의 프로젝트에서는 논리가 약간 다릅니다. 화면을 누르면 x 값이 240보다 작거나(좌회전) 240보다 작지 않습니다(우회전). 거기에는 또 다른 조건문이 필요하지 않습니다. 화면을 누르면 240보다 작거나 그렇지 않습니다. 우리가 관심을 가져야 할 버튼은 두 개뿐입니다. 오른쪽 프로젝트는 아직 완료되지 않았습니다.
학생들은 프로젝트에 대한 이 두 가지 접근 방식의 차이점을 이해해야 합니다. 기본 논리의 차이점을 이해하는 것은 프로그래머를 개발하는 데 큰 도움이 될 것입니다.
- 이 프로젝트가 무엇을 하는지 살펴보겠습니다.
화면이 눌렸는지 계속 확인합니다. 화면이 눌리지 않으면 앞으로 이동하고, 눌렸다면 화면이 눌린 위치를 확인합니다.
왼쪽(240 미만)을 눌렀다면 왼쪽으로 회전합니다. 그렇지 않으면 우회전합니다. X 값이 240보다 큰 경우를 위한 다른 조건이 필요하지 않습니다. 240보다 작지 않은 경우 (좌회전) 더 커야 하기 때문입니다 (우회전). 걱정해야 할 버튼은 두 개뿐입니다.
각 턴 후제어 블록이 화면을 더 이상 누르지 않을 때까지 프로젝트를 기다린 후 계속 진행합니다.
- 이제 프로젝트가 완료되었으므로 다운로드하여 실행하여 작동 방식을 테스트합니다.
- 도움이 필요하시면 VEXcode V5에서 프로젝트 다운로드 및 실행 튜토리얼 동영상을 시청하세요.
- 버튼이 Clawbot의 움직임을 제어하는 방법에 대해 엔지니어링 노트에 기록합니다.
교사 팁
테스트하는 동안 학생들은 Clawbot 뒤에서 사용자 인터페이스를 사용하면 반대로 작동하는 것처럼 보인다는 것을 알아야 합니다. 사용자 관점에서 볼 때, 클로봇은 사용자가 누르는 쪽에서 멀어집니다. 이는 최적의 사용자 경험이 아닙니다.
Clawbot 뒤에서 앞으로 이동할 때 화면의 버튼을 누를 때 화면 오른쪽을 누르면 왼쪽으로, 화면 왼쪽을 누르면 오른쪽으로 회전합니다. 이는 좋은 사용자 경험이 아닙니다. 사용자 경험은 사용자가 사용자 인터페이스와 얼마나 잘 상호 작용하여 컴퓨터 시스템을 제어할 수 있는지를 나타냅니다. 이 랩의 적용 섹션에서 사용자 인터페이스에 대한 자세한 내용을 확인할 수 있습니다.
이 경우 사용자 경험을 개선하기 위해 사용자 인터페이스를 개선해야 합니다.
- LeftOrRight 프로젝트를 검토하고 사용자가 Clawbot 뒤에서 버튼을 누르면 사용자가 화면의 왼쪽을 누르면 로봇이 우회전하도록 수정합니다. 그렇지 않으면 Clawbot이 좌회전합니다.
- 엔지니어링 노트북에서 이 프로젝트를 계획, 테스트 및 반복하여 프로젝트가 Clawbot을 사용자가 Clawbot 뒤에서 누르고 있는 화면 측면으로 전환하도록 합니다.
교사 도구 상자
학생들은 엔지니어링 노트북에 이를 기록하면서 프로젝트에 대한 이러한 변경 사항을 계획, 테스트하고 개선해야 합니다. 개별 엔지니어링 노트북 평가 기준에 대해 다음 링크 중 하나를 클릭하세요(Google Doc / .docx / .pdf), 또는 팀 노트북에 대해 다음 링크 중 하나를 클릭하세요(Google Doc / .docx / .pdf). 학생들에게 작업을 시작하기 전에 점수 계산 방법을 설명하는 것을 잊지 마세요.
교사 도구 상자
-
솔루션
위에 제기된 문제를 해결하는 데는 두 가지 방법이 있습니다. 첫 번째 방법은 설명서에 적힌 방법입니다. LeftOrRight 프로젝트를 검토하고 사용자가 Clawbot 뒤에서 버튼을 누를 때 사용자가 화면 왼쪽을 누르면 로봇이 오른쪽으로 회전하도록 수정합니다. 그렇지 않으면 클로봇은 왼쪽으로 돈다.

다른 해결책은 Operator 블록을 전환하여 x 값이 240보다 클 때 Clawbot이 왼쪽으로 회전하도록 하는 것입니다.

토론을 촉진하다
x 값이 240(화면 왼쪽)보다 작을 때 조건문을 프로그래밍할 때는 좌표 평면의 좌표를 사용해야 했습니다. 두뇌 화면에 시각적 버튼을 그리려면 좌표도 사용해야 합니다.
V5 로봇 두뇌 화면의 좌표가 표시된 2단계로 돌아갑니다.

Q:화면 오른쪽 가장자리의 x 값은 무엇입니까?
A:x 값은 왼쪽 가장자리의 0에서 오른쪽 가장자리의 480까지 증가합니다.
Q:따라서 x 값의 범위는 480(0~480)입니다. y 값의 범위는 무엇입니까?
A:y 값의 범위는 240(0~240)입니다.
Q:이 좌표 평면의 원점(0, 0)은 어디에 있습니까?
A:원점은 왼쪽 위입니다.
Q:y 값이 0일 때 화면 맨 위에 있습니다. 이게 왜 특이한 걸까요?
A:일반적으로 y값은 위로 갈수록 증가하지만, V5 화면에서는 아래로 갈수록 y값이 증가합니다. 하지만 화면 왼쪽 상단의 원점(0, 0)에서 멀어질수록 y 값이 증가하는 것으로 생각할 수 있습니다.
학습을 확장하세요
Rethink 섹션의 사용자 인터페이스 챌린지에서 학생들은 Clawbot의 발톱과 팔을 제어하기 위해 화면에 4개의 버튼을 만드는 프로젝트를 개발해야 합니다. 이 과제에서는 화면에 네 개의 버튼이 표시되도록 요청합니다. 이전 페이지와 마찬가지로 이 학습 확장은 해당 과제에 대비하는 데 도움이 됩니다. 과제에는 프로그래밍할 버튼이 4개 있지만 이 과제에는 2개만 있기 때문입니다.
학생들이 프로그램에 이벤트를 추가하여 프로젝트가 실행될 때 화면에 보이는 버튼 2개가 나타나도록 합니다. 학생들에게 이벤트 및 모양 블록, 특히 [사각형 그리기] 블록에 대한 정보를 알아보려면 VEXcode V5의 도움말 기능을 사용하라고 제안합니다. [사각형 그리기] 블록에서 픽셀 수를 기준으로 뇌의 화면이 좌표계로 어떻게 구성되는지 살펴보도록 학생들에게 지시합니다. 해당 블록 내에서 매개변수를 설정하려면 이를 이해해야 합니다. 또한, 이벤트를 방송하는 방법을 이해해야 합니다. 이 경우 이벤트는 버튼을 그리는 것입니다.
학생들은 엔지니어링 노트북에 이를 문서화하는 동시에 프로젝트에 대한 이러한 변경 사항을 계획, 테스트하고 개선해야 합니다. 개별 엔지니어링 노트북 평가 기준의 경우 다음 링크 중 하나를 클릭하세요(Google 문서 / .docx / .pdf), 또는 팀 노트북의 경우 다음 링크 중 하나를 클릭하세요(Google 문서 / .docx / .pdf).
다음은 예시 솔루션입니다.

더욱 전문적이고 사실적인 경험을 위해 학생들에게 두 가지 색상 선택에 대한 피드백을 요청해 보세요.
선택한 색상이 인터페이스를 사용하고 싶게 만드는가, 아니면 사용자 입장에서 어떤 색상을 선호할까?
훌륭한 사용자 인터페이스를 개발하는 과정의 일부는 사용자 경험, 심지어 미적 선호도에 대한 데이터를 수집하는 것입니다.