두 개의 버튼 프로그래밍
교사 도구 상자
-
이 활동의 목적
이전 페이지에서 학생은 Brain Up 버튼을 사용하여 팔을 스핀업하도록 프로그래밍하고 있었습니다. 이 페이지는 이전 프로젝트를 기반으로 브레인 다운 버튼을 사용하여 암이 스핀다운되도록 프로그래밍합니다.

이 활동은 학생들에게 [If then else] 블록을 사용한 프로그래밍뿐만 아니라 감지 및 조작자 블록을 사용하여 로봇이 Brain Up 또는 Down 버튼을 눌렀는지 확인합니다. Brain Up 버튼을 누르면 Clawbot의 팔이 올라갑니다. Brain Down 버튼을 누르면 Clawbot의 팔이 내려갑니다. 이는 이전 활동을 기반으로 하며 Rethink 섹션의 사용자 인터페이스 챌린지의 토대가 됩니다. 사용자 인터페이스 챌린지의
경우, 학생들은 IQ 로봇 뇌의 버튼을 사용하여 팔을 올리고, 팔을 내리고, 발톱을 열고, 발톱을 모두 닫도록 발톱 봇을 프로그래밍해야 합니다. [If then], [If then else], <Brain 버튼 누르기 또는 [Spin]> 블록에 대한
자세한 내용은 VEXcode IQ 내의 도움말 정보를 참조하세요. 기본 제공 도움말 도구에 대한 자세한 내용을 보려면 여기를 클릭하세요.
다음은 학생들이 이 활동에서 무엇을 할 것인지에 대한 개요이다.
- 기존 ArmUp2를 사용하여 제공된 ArmUpDown 프로젝트를 빌드하고 프로젝트가 수행할 작업을 예측합니다.
- 프로젝트에서 블록의 흐름을 설명하는 데 도움이 되는 플로 차트를 봅니다.
- ArmUpDown 프로젝트가 수행하는 작업에 대한 설명을 구체화합니다.
- If Then Else Blocks 튜토리얼 비디오를 시청하세요.
- [If then else] 블록을 사용하여 프로젝트를 편집합니다.
- 중지 및 토론: 학생들은 실제 관찰과 비교하여 Clawbot이 수행할 프로젝트에 대한 예측을 반영합니다.
- 팔을 프로그래밍할 때와 동일한 프로젝트 개요를 사용하여 발톱을 프로그래밍하십시오.
| 수량 | 필요한 재료 |
|---|---|
| 1 |
벡스 IQ 슈퍼 키트 |
| 1 |
VEXcode IQ |
| 1 |
엔지니어링 노트 |
| 1 |
Clawbot (Drivetrain) 템플릿 |
Clawbot 팔은 위아래로 움직일 준비가 되었습니다!
이 활동은 조건부 행동으로 로봇을 프로그래밍할 수 있는 도구를 제공합니다.
[If then else] 블록은 활동 내에서 주된 초점이지만 다른 감지, 제어 및 운영자 블록도 사용됩니다.

VEXcode IQ 내부의 도움말 정보를 사용하여 블록에 대해 배울 수 있습니다. 도움말 기능 사용에 대한 지침은 도움말 사용 튜토리얼을 참조하세요.

1단계: 팔을 아래로 움직이는 프로그래밍.
이전 페이지에서 Brain Up 버튼을 눌렀을 때 Clawbot의 팔이 회전하도록 프로그래밍했습니다. 하지만 팔을 내리면 어떨까요? 먼저 이전 ArmUp2 프로젝트를 다시 살펴보겠습니다.

동일한 [If then] 블록을 사용하여 팔을 위로 돌려 팔을 아래로 돌릴 수 있습니까? 한번 해볼까요? 기존 ArmUp2 프로젝트를 편집하여 아래 프로젝트를 빌드하십시오.

-
프로젝트를 ArmUpDown으로 저장합니다. 학생들이 프로젝트를 저장하는 데 도움이 필요한 경우, 명명 및 저장 튜토리얼을 참조한다.

- 이제 프로젝트 이름 ArmUpDown이 도구 모음 중앙의 창에 있는지 확인하십시오.
- Clawbot이 엔지니어링 노트북에서 수행할 작업을 프로젝트에서 예측합니다. 사용자와 Clawbot의 행동을 모두 설명합니다.
- Clawbot이 수행하는 프로젝트에 대한 예측이 올바른지 테스트합니다.
- Clawbot의 Slot 3에 프로젝트를 다운로드한 다음 실행합니다.
- 프로젝트 다운로드 및 실행에 대한 도움말은 VEXcode IQ의 프로젝트 다운로드 및 실행 방법을 설명하는 튜토리얼을 참조하십시오.

- 프로젝트에 대한 설명을 확인하고 필요에 따라 수정할 수 있도록 메모를 추가하십시오.
교사 팁
학생이 VEXcode IQ를 처음 사용하는 경우 도구 모음에서 튜토리얼을 보고 다른 기본 기술을 배울 수도 있습니다.

교사 도구 상자
학생들이 위에서 구축한 프로젝트가 효과가 있을 것입니다. Brain Up 버튼을 누르면 팔이 위로 회전하고 Brain Down 버튼을 누르면 팔이 아래로 회전합니다. 프로젝트가 있는 그대로 작동하더라도 최적으로 작성되지 않습니다. 두 조건이 동시에 참일 수 있는 경우가 있을 수 있습니다. 또한 Brain Up 버튼의 상태가 먼저 눌러지기 때문에 Brain Up 버튼을 누른 다음 Brain Down도 누르면 팔이 계속 위로 회전합니다. 이 작업은 Brain Up 버튼이 해제될 때까지 멈추지 않습니다. 따라서, 프로젝트는 이러한 잠재적인 문제를 방지하기 위해 [If then else] 블록을 포함하도록 다음 단계에서 다시 작성될 것입니다.
교사 도구 상자
-
중지 및 토론
이제 학생들이 프로젝트를 테스트했으므로, 자신의 예측이 관찰과 어떻게 비교되는지 물어본다. 다음 질문을 하여 토론을 진행한다.
-
당신의 예측이 당신의 관찰과 같았습니까?
-
프로젝트에서 무엇이 행복해 보이나요?
-
위쪽 및 아래쪽 버튼의 조건은 한 번만 확인됩니까?
-
프로젝트를 보다 효율적으로 운영할 수 있도록 재구성할 수 있다고 생각하십니까?
2단계: 프로젝트 흐름 이해하기.
이전 단계에서 프로젝트는 팔을 올리고 내렸습니다. 그러나 Brain Up 버튼이 눌리기 시작하는 상태가 먼저이기 때문에 Brain Up 버튼을 누른 상태에서 Brain Down도 누르면 Brain Up 버튼을 놓을 때까지 해당 동작이 멈추지 않으므로 팔이 계속 회전합니다. 프로젝트 흐름을 설명하는 다음 플로 차트를 봅니다.

따라서 프로젝트는 언제든지 하나의 인스턴스만 true가 될 수 있도록 [If then] 블록을 [If then else] 블록으로 대체할 수 있습니다.
[If then else] 블록에서 다음 튜토리얼 비디오 보기:
VEXcode IQ에서 If-Then-Else 튜토리얼 비디오를 시청하여 시작하십시오.

[If then] 블록을 사용하면 [Wait until] 블록에 대한 필요성도 제거됩니다. 암은 Brain Up 버튼이 해제될 때까지 계속 회전하기 때문입니다. 이는 Brain Up 버튼 조건이 false (해제) 가 될 때까지 [If then else] 의 "else" 부분에 도달하지 않기 때문에 발생합니다.
[Forever] 블록을 사용하면 첫 번째 조건을 지속적으로 확인할 수 있습니다.

[If then else] 블록을 추가하여 프로젝트 변경을 살펴보겠습니다. 이제 Arm Motor는 Brain Up 버튼을 더 이상 누르지 않을 때까지 계속 회전합니다 (해제). [Forever] 블록으로 인해 이 조건은 false가 될 때까지 계속 검사됩니다.
Brain Up 버튼의 상태가 false이면 프로젝트는 다음 블록으로 계속 진행됩니다. 즉, Brain Down 버튼을 누르면 상태를 확인하는 것입니다. 브레인 다운 버튼을 누르는 조건이 참이면 암이 회전합니다. 다시 말하지만, [Forever] 블록으로 인해 이 조건은 false가 될 때까지 계속 검사됩니다. Brain Up 버튼의 상태가 false가
되면 프로젝트는 [Stop motor] 블록인 다음 블록으로 계속 진행됩니다. 따라서 암 모터는 두 조건이 모두 거짓일 때만 정지합니다 (두 버튼을 누르지 않음).

토론 동기 부여
Q : Brain Up 버튼을 누르는 상태가 거짓 (해제) 인 경우 프로젝트 흐름의 진행 상황은 어떻게 됩니까?
A: 조건이 거짓인 경우, 프로젝트 흐름은 브레인 다운 버튼을 누르는 상태를 계속 확인합니다.
질문: 위의 프로젝트에서 [If then else] 블록의 목적은 무엇입니까?
A: [ If then else] 블록을 사용하면 한 번에 하나의 인스턴스만 참이 될 수 있습니다. 따라서 [If then else] 블록을 사용하면 Brain Up 버튼과 Brain Down 버튼이 동시에 true가 될 수 없습니다. Brain Down 버튼의 두 번째 조건을 누르면 Brain Up 버튼의 첫 번째 조건이 false가 아니면 옵션이 되지 않기 때문입니다. 또 다른 목적은 프로그래밍 효율성을 향상시키는 것입니다.
Q: 위쪽 및 아래쪽 버튼을 누르는 조건이 모두 거짓일 경우 프로젝트 흐름의 진행 상황은 어떻게 됩니까?
A: 두 조건이 모두 거짓인 경우, 프로젝트 흐름은 스택의 상단으로 돌아가 영원히 반복하기 전에 [스톱 모터] 블록으로 계속 진행됩니다.
3단계: [ If then else] 블록으로 프로그래밍하기.
[If then else] 블록을 사용하겠습니다.
-
프로젝트가 다음과 같이 표시되도록 ArmUpDown 프로젝트에 [If then else] 블록을 추가합니다.

-
프로젝트를 ArmUpDown2로 저장합니다. 학생들이 프로젝트를 저장하는 데 도움이 필요한 경우, 명명 및 저장 튜토리얼을 참조한다.

- Clawbot의 Slot 4에 프로젝트를 다운로드한 다음 실행합니다.
- 프로젝트 다운로드 및 실행에 대한 도움말은 VEXcode IQ의 프로젝트 다운로드 및 실행 방법을 설명하는 튜토리얼을 참조하십시오.

- Brain Up 버튼을 눌렀을 때 암이 회전하는지 테스트하고 Brain Down 버튼을 눌렀을 때 스핀다운하는지 테스트합니다.
- 브레인 업 (Brain Up) 및 다운 (Down) 버튼을 누르지 않으면 암 모터가 정지하는지 확인하십시오.
- 엔지니어링 노트에 프로젝트에 if then else 블록을 추가하기 전과 후에 Clawbot이 어떻게 행동했는지에 대한 관찰 내용을 작성하십시오.
교사 도구 상자
-
중지 및 토론
학생들이 [If then else] 블록을 추가하기 전과 후에 프로젝트를 테스트한 후, 브레인 업 버튼이 해제될 때까지 팔이 계속 회전할 수 있는 방법에 대해 학생들과 논의합니다. 학생들에게 공학 공책에서 관찰한 내용을 공유해 달라고 한다. 다음 질문을 하여 토론을 진행한다.
-
Clawbot이 단지 [If then] 블록과 비교하여 [If then else] 블록을 사용하는 것과 다르게 동작하는 것을 볼 수 있습니까?
-
프로그램 효율성이 중요한 이유는 무엇이라고 생각하시나요?
-
Brain Up 버튼 상태는 프로젝트에서 한 번만 확인됩니까?
학생들의 공학 공책은 개별적으로 (Google / .docx/ .pdf) 또는 팀으로 (Google / .docx / .pdf) 관리하고 채점할 수 있습니다. 이전 링크는 각 접근 방식에 대해 다른 채점표를 제공합니다. 채점표가 교육 계획에 포함될 때마다 채점표를 설명하거나 적어도 활동을 시작하기 전에 학생들에게 사본을 제공하는 것이 좋습니다.
교사 도구 상자
학생들은 Clawbot이 [If then] 블록과 비교하여 [If then else] 블록을 사용하는 방식에 큰 차이가 없음을 알 수 있습니다 . 학생들이 물리적으로 많은 차이를 볼 수 없는 경우, 프로그래밍 효율성과 프로젝트를 단순화하는 것이 블록 사용을 줄일 수 있는 방법에 대한 토론을 촉진하십시오. 프로젝트에서 블록을 적게 사용하면 잠재적인 오류의 양을 줄일 수 있습니다.
4단계: 발톱 프로그래밍.
이전 단계에서는 [If then else] 블록을 사용하여 프로젝트를 보다 효율적으로 실행할 수 있도록 최적화했습니다. 이전 예에서는 Brain Up 및 Down 버튼을 사용하여 암을 조작했습니다. 정확히 동일한 프로젝트 개요를
사용하여 발톱을 조작할 수도 있습니다.
-
ArmUpDown2 프로젝트를 검토하고 드롭다운 메뉴를 사용하여 [Spin] 블록을 ArmMotor 대신 ClawMotor로 변경합니다. 드롭다운 메뉴를 사용하여 브레인 업 버튼이 발톱을 "열기" 로 회전하고 브레인 다운 버튼이 발톱을 "닫기" 로 회전하는지
확인하십시오.
-
프로젝트를 ClawUpDown으로 저장합니다. 학생들이 프로젝트를 저장하는 데 도움이 필요한 경우, 명명 및 저장 튜토리얼을 참조한다.

- Clawbot의 Slot 1에 프로젝트를 다운로드한 다음 실행합니다.
- 프로젝트 다운로드 및 실행에 대한 도움말은 VEXcode IQ의 프로젝트 다운로드 및 실행 방법을 설명하는 튜토리얼을 참조하십시오.

- Brain Up 버튼을 누르면 발톱이 회전하고 Brain Down 버튼을 누르면 발톱이 회전하는지 테스트합니다.
- 브레인 업 (Brain Up) 및 다운 (Down) 버튼을 누르지 않으면 클로 모터가 정지하는지 확인하십시오.
- 엔지니어링 노트에 프로젝트에 if then else 블록을 추가하기 전과 후에 Clawbot이 어떻게 행동했는지에 대한 관찰 내용을 작성하십시오.
교사 도구 상자
이제 학생들이 버튼을 사용하여 팔과 발톱을 조작할 수 있는 기술을 습득했으므로, 학생들에게 동일한 프로젝트에서 네 가지 작업 (팔 올리기, 팔 내리기, 발톱 열기 및 발톱 닫기) 을 모두 수행할 수 있는 방법을 브레인스토밍하도록 요청한다.
학생들은 재고 섹션에서 다른 블록을 활용하여 로봇이 네 가지 작업을 모두 수행할 수 있도록 합니다.
학습 연장
- 모터 정지 블록
설정
학생들이 로봇을 프로그래밍하여 팔을 올리고 내리면 발톱의 무게로 인해 팔이 아래로 드리프트될 수 있습니다. 이
경우 [모터 정지 설정] 블록을 사용하여 중력과 발톱의 무게로 인해 팔이 떨어지지 않도록 할 수 있습니다. 이 블록은 프로젝트 초기에 사용할 수 있으며 프로젝트의 나머지 부분에서 향후 모든 모터 블록에 적용됩니다.

설정된 모터 정지 블록에는 세 가지 설정이 있습니다.
- 브레이크는 모터를 즉시 정지시킵니다.
- 코스트는 모터를 점진적으로 회전시켜 멈춥니다.
- 길게 누르면 모터가 즉시 정지하고 움직이면 정지 위치로 돌아갑니다.