컨트롤러를 사용하면 로봇을 더 쉽게 운전하고 이동하여 작업을 완료할 수 있습니다. 그러나 드라이브 프로그램 사용에는 제한이 있으며, 로봇 빌드나 작업에 따라 다른 제어가 필요할 수 있습니다. 컨트롤러를 코딩하면 컨트롤러를 최적화하여 로봇과 현재 작업에 더 잘 맞도록 만들 수 있습니다. VEXcode EXP에서 컨트롤러를 코딩하는 방법에는 여러 가지가 있습니다. 각각에는 장점과 한계가 있으며, 일부 방법은 원하는 결과에 따라 특정 상황에 더 적합합니다.
이 문서에서는 VEXcode EXP에서 컨트롤러를 사용자 정의 코딩하기 위한 세 가지 옵션을 안내합니다. 각 방법은 장점, 제한 사항 및 방법 선택 시 도움이 되는 사용 사례 예시와 함께 설명됩니다. 이 기사의 목적에 따라 표시된 모든 코드 예제는 Clawbot용으로 작성되었습니다. 그러나 동일한 개념이 builds.vex.com에 있는 수많은 다른 빌드와 사용자 정의 빌드에 적용될 수 있습니다.
옵션 1: 장치 구성에서 버튼 할당
이 옵션은 BaseBot 또는 Clawbot과 같은 표준 빌드를 사용하고 빠르게 시작하고 실행하려는 경우 유용합니다.
이 옵션을 사용하면 장치 구성에서 컨트롤러의 버튼에 모터, 드라이브트레인 또는 모터 그룹을 할당할 수 있습니다. 장치 구성에서 컨트롤러에 버튼을 할당하는 방법에 대한 자세한 내용은 이 문서를 참조하십시오.
옵션 1 요약: 장치 구성에서 버튼 할당
장점 |
제한 사항 |
예시 상황 |
|
|
|
옵션 2: Forever 루프 사용
표준 빌드 대신 사용자 정의 빌드를 사용하거나 컨트롤러에서 더 많은 사용자 정의를 원하는 경우 이 옵션이 좋습니다. Forever 루프를 사용하는 것은 컨트롤러에 대한 사용자 정의 코드를 생성하는 데 좋은 방법입니다.
이 옵션은 컨트롤러 및 관련 버튼에 대한 모든 조건을 Forever 루프에 배치합니다. 이는 특히 맞춤형 빌드 디자인에서 더 많은 유연성을 제공하지만 약간의 코딩 경험도 필요합니다. 그러나 이 옵션을 사용할 때 고려해야 할 한 가지는 프로젝트의 길이와 복잡성입니다. 추가되는 조건이 많을수록 코드 스택이 길어질 수 있습니다. 즉, 여러 블록을 순서대로 실행해야 하며, 블록이 많으면 프로젝트 실행 속도가 느려질 수 있습니다. 프로젝트 실행 속도가 느려지면 컨트롤러 버튼을 누르고 로봇 동작을 확인하는 사이에 지연이 발생할 수 있습니다.
아래에 표시된 구체적인 예는 맞춤형 디자인 로봇(예: 맞춤형 드라이브트레인이 있는 로봇)과 함께 Forever 루프를 사용하여 로봇을 구동하고 발톱과 팔을 조작하여 개체와 상호 작용할 수 있는 한 가지 방법입니다.
"옵션 2" VEXcode EXP 프로젝트 파일 >다운로드
옵션 2 코드에 대한 설명.
코드 조각 |
설명 |
이 코드 예제에는 Clawbot이 사용되었습니다. 컨트롤러의 버튼을 사용하여 팔을 올리거나 내릴 때 버튼을 놓으면 중력으로 인해 팔이 다시 아래로 떨어집니다. 팔과 집게발을 모두 "고정"으로 설정하면 컨트롤러의 버튼을 놓은 후에도 팔과 집게발이 모두 제자리에 유지됩니다. |
|
이 코드 예제에는 Clawbot이 사용되었습니다. 컨트롤러의 버튼을 사용하여 팔을 올리거나 내릴 때 버튼을 놓으면 중력으로 인해 팔이 다시 아래로 떨어집니다. 팔과 집게발을 모두 "고정"으로 설정하면 컨트롤러의 버튼을 놓은 후에도 팔과 집게발이 모두 제자리에 유지됩니다. 컨트롤러에서 어떤 버튼이 눌려져 있는지 지속적으로 확인하기 위해 Forever 루프가 사용됩니다. [모터 속도 설정] 블록은 2축과 3축을 따라 현재 컨트롤러의 위치에 모터 속도를 설정하는 데 사용됩니다. 이는 자동차를 운전 중에 설정하는 것과 같습니다. 그것이 반드시 자동차를 움직이게 만드는 것은 아니며, 단지 설정만 해줄 뿐입니다. 각 조이스틱 축은 -100에서 +100 사이의 값을 반환하고 중앙에 있을 경우 0 값을 반환합니다. 그러면 조이스틱 축을 눌렀을 때 -100% ~ 100%가 됨을 의미합니다. 축이 100 또는 -100 쪽으로 더 멀리 밀릴수록 모터가 더 빠르게 회전합니다. 그런 다음 [Spin] 블록을 사용하여 실제로 모터를 움직입니다. 이는 방향이 설정된 후 자동차의 가스를 누르는 것과 같습니다. 이를 통해 각 모터는 4개의 컨트롤러 축 중 하나에 의해 제어될 수 있습니다. |
|
이 코드 예제에는 Clawbot이 사용되었습니다. 컨트롤러의 버튼을 사용하여 팔을 올리거나 내릴 때 버튼을 놓으면 중력으로 인해 팔이 다시 아래로 떨어집니다. 팔과 집게발을 모두 "고정"으로 설정하면 컨트롤러의 버튼을 놓은 후에도 팔과 집게발이 모두 제자리에 유지됩니다. [If then else if then else] 블록은 컨트롤러에서 누르거나 떼는 버튼에 특정 동작을 매핑하는 데 사용됩니다. 이 코드 섹션에서는 Up 또는 Down 버튼을 누른 경우 조건이 설정됩니다. 그렇다면 팔을 올리거나 내리는 등 특정 행동이 발생하게 됩니다. 조건의 else 부분도 있는데, 어느 버튼도 누르지 않으면 팔이 움직이지 않도록 설정됩니다. Claw 프로젝트의 다음 코드 섹션에도 동일한 설명이 따릅니다. |
옵션 2 요약: Forever 루프 사용
장점 |
제한 사항 |
예시 상황 |
|
|
|
옵션 3: 이벤트 사용
컨트롤러에 많은 사용자 정의를 원하는 경우 이벤트를 사용하는 것이 가장 좋은 옵션입니다. 버튼을 한 번 누르면 버튼을 눌러 발톱을 열고, 팔을 올리고, 설정된 거리만큼 앞으로 이동하는 등 여러 로봇 동작을 실행할 수 있습니다. Forever 루프 내에서 버튼당 여러 동작을 코딩하려고 하면 프로젝트 실행이 크게 느려질 수 있습니다. 이벤트를 사용하면 이 작업을 보다 효과적으로 수행할 수 있습니다.
이 옵션은 이벤트를 사용하여 프로젝트 흐름을 분할합니다. 이는 Forever 루프를 사용하는 것과 비슷하지만 코드를 더 체계적으로 구성할 수 있으므로 버튼 실행의 응답 시간이 더 빨라집니다. 응답 시간이 빠르다는 것은 컨트롤러 버튼을 누른 후 로봇 동작을 보는 사이에 지연이 발생하지 않는다는 것을 의미합니다. 이 예는 이전 프로젝트와 동일한 동작을 보여 주지만 Forever Loop 대신 이벤트를 사용하여 수행되었습니다.
"옵션 3" VEXcode EXP 프로젝트 파일 >다운로드
옵션 3 코드에 대한 설명.
코드 조각 |
설명 |
이 코드 예제에는 Clawbot이 사용되었습니다. 컨트롤러의 버튼을 사용하여 팔을 올리거나 내릴 때 버튼을 놓으면 중력으로 인해 팔이 다시 아래로 떨어집니다. 팔과 집게발을 모두 "고정"으로 설정하면 컨트롤러의 버튼을 놓은 후에도 팔과 집게발이 모두 제자리에 유지됩니다. |
|
이 코드 예제에는 Clawbot이 사용되었습니다. 컨트롤러의 버튼을 사용하여 팔을 올리거나 내릴 때 버튼을 놓으면 중력으로 인해 팔이 다시 아래로 떨어집니다. 팔과 집게발을 모두 "고정"으로 설정하면 컨트롤러의 버튼을 놓은 후에도 팔과 집게발이 모두 제자리에 유지됩니다. {When controller axis} 이벤트 블록은 조이스틱을 사용하여 컨트롤러의 4개 축 중 하나가 변경될 때 특정 동작을 트리거하는 데 사용됩니다. [모터 속도 설정] 블록은 A 및 D 축을 따라 현재 컨트롤러의 위치에 모터 속도를 설정하는 데 사용됩니다. 이는 자동차를 운전 중에 설정하는 것과 같습니다. 그것이 반드시 자동차를 움직이게 만드는 것은 아니며, 단지 설정만 해줄 뿐입니다. 각 조이스틱 축은 -100에서 +100 사이의 값을 반환하고 중앙에 있을 경우 0 값을 반환합니다. 그러면 조이스틱 축을 눌렀을 때 -100% ~ 100%가 됨을 의미합니다. 축이 100 또는 -100 쪽으로 더 멀리 밀릴수록 모터가 더 빠르게 회전합니다. 그런 다음 [Spin] 블록을 사용하여 실제로 모터를 움직입니다. 이는 방향이 설정된 후 자동차의 가스를 누르는 것과 같습니다. 이를 통해 각 모터를 4개의 컨트롤러 축 중 하나로 제어할 수 있습니다. |
|
이 코드 예제에는 Clawbot이 사용되었습니다. 컨트롤러의 버튼을 사용하여 팔을 올리거나 내릴 때 버튼을 놓으면 중력으로 인해 팔이 다시 아래로 떨어집니다. 팔과 집게발을 모두 "고정"으로 설정하면 컨트롤러의 버튼을 놓은 후에도 팔과 집게발이 모두 제자리에 유지됩니다. {When controller axis} 이벤트 블록은 컨트롤러에서 누르거나 떼는 버튼에 특정 동작을 매핑하는 데 사용됩니다. 이 코드 섹션에서는 Up 또는 Down 버튼을 누른 경우 조건이 설정됩니다. 그렇다면 팔을 올리거나 내리거나 멈추는 것과 같은 특정 행동이 발생합니다. Claw 프로젝트의 마지막 코드 섹션에도 동일한 설명이 따릅니다. |
옵션 3 요약: 이벤트 사용
장점 |
제한 사항 |
예시 상황 |
|
|
|