제어 장치#
소개#
VEX EXP 컨트롤러는 버튼과 두 개의 조이스틱을 갖추고 있습니다. 컨트롤러 메서드를 사용하여 버튼 누름을 확인하고, 조이스틱 움직임을 읽고, 구성된 컨트롤러 동작을 활성화 또는 비활성화하거나, 컨트롤러 이벤트 발생 시 함수를 실행할 수 있습니다.
구성된 컨트롤러 동작은 장치 메뉴에서 설정한 컨트롤러 동작입니다. 프로젝트 진행 중에 이러한 구성된 동작을 일시적으로 활성화 또는 비활성화하려면 remote_control_code_enabled 사용하십시오.
이 페이지에서는 예시 컨트롤러 이름으로 controller 을 사용합니다. 필요에 따라 구성된 이름으로 교체하십시오.
아래는 사용 가능한 모든 방법의 목록입니다.
동작 — 구성된 컨트롤러 동작을 켜거나 끕니다.
remote_control_code_enabled— 장치 메뉴에 구성된 컨트롤러 작업을 활성화 또는 비활성화합니다.
게터 — 버튼 상태와 조이스틱 위치를 읽습니다.
콜백 함수 — 컨트롤러 입력이 변경될 때 함수를 실행합니다.
.pressed— 지정된 버튼이 눌렸을 때 함수를 실행합니다..released— 지정된 버튼이 해제될 때 함수를 실행합니다..changed— 지정된 축을 따라 조이스틱의 위치가 변경될 때 함수를 실행합니다.
생성자 — 컨트롤러 객체를 수동으로 생성합니다.
Controller— 컨트롤러 객체를 생성합니다.
행동#
remote_control_code_enabled#
remote_control_code_enabled 장치 메뉴에서 구성된 컨트롤러 동작을 활성화 또는 비활성화하는 변수입니다. 컨트롤러에서 구성된 동작은 기본적으로 활성화되어 있습니다.
Usage:
remote_control_code_enabled = state
값 |
설명 |
|---|---|
|
컨트롤러에서 구성한 동작을 활성화합니다. |
|
컨트롤러에 설정된 동작을 비활성화합니다. |
# Drive forward or backward using the left joystick
remote_control_code_enabled = False
while True:
if controller.axis3.position() > 0:
drivetrain.drive(FORWARD)
elif controller.axis3.position() < 0:
drivetrain.drive(REVERSE)
# Press A to use controller configured actions again
elif controller.buttonA.pressing():
break
else:
drivetrain.stop()
wait(20, MSEC)
remote_control_code_enabled = True
게터스#
.pressing#
.pressing 컨트롤러의 특정 버튼이 현재 눌려 있는지 여부를 반환합니다. 이 메서드는 controller.buttonA 과 같은 특정 버튼 객체에서 호출해야 합니다.
True— 지정된 버튼이 눌러지고 있습니다.False— 지정된 버튼이 눌리지 않았습니다.
사용법:
사용 가능한 버튼 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.
단추 |
명령 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
매개변수 |
설명 |
|---|---|
이 메서드에는 매개변수가 없습니다. |
# Turn right while L1 is pressed
while True:
if controller.buttonL1.pressing():
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(20, MSEC)
.position#
.position 조이스틱 축의 위치를 -100 ~ 100 사이의 숫자로 반환합니다.
이 메서드는 controller.axis1 과 같은 특정 축 객체에서 호출되어야 합니다.
사용법:
사용 가능한 축 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.
중심선 |
명령 |
|---|---|
|
|
|
|
|
|
|
|
매개변수 |
설명 |
|---|---|
이 메서드에는 매개변수가 없습니다. |
# Turn with the left joystick
remote_control_code_enabled = False
while True:
if controller.axis4.position() > 10:
drivetrain.turn(RIGHT)
elif controller.axis4.position() < -10:
drivetrain.turn(LEFT)
else:
drivetrain.stop()
wait(20, MSEC)
콜백#
.pressed#
.pressed 지정된 버튼이 눌렸을 때 함수를 실행합니다. 한 번 사용하면 해당 버튼이 눌릴 때마다 함수가 자동으로 실행됩니다.
사용법:
사용 가능한 버튼 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.
단추 |
명령 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
매개변수 |
설명 |
|---|---|
|
지정된 버튼이 눌릴 때마다 실행되도록 미리 정의된 함수. |
|
선택 사항입니다. 콜백 함수에 전달할 인수를 포함하는 튜플입니다. 자세한 내용은 매개변수가 있는 이벤트 사용을 참조하세요. |
# Drive forward when R1 is pressed
def drive_forward():
drivetrain.drive_for(FORWARD, 200, MM)
controller.buttonR1.pressed(drive_forward)
.released#
.released 지정된 버튼에서 손을 떼면 함수를 실행합니다. 한 번 사용하면 해당 버튼에서 손을 뗄 때마다 함수가 자동으로 실행됩니다.
사용법:
사용 가능한 버튼 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.
단추 |
명령 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
매개변수 |
설명 |
|---|---|
|
지정된 버튼이 해제될 때마다 실행되도록 이전에 정의된 함수. |
|
선택 사항입니다. 콜백 함수에 전달할 인수를 포함하는 튜플입니다. 자세한 내용은 매개변수가 있는 이벤트 사용을 참조하세요. |
# Stop driving when R1 is released
def stop_driving():
drivetrain.stop()
controller.buttonR1.released(stop_driving)
.changed#
.changed 조이스틱의 위치가 지정된 축을 따라 변경될 때 함수를 실행합니다. 한 번 사용하면 조이스틱의 위치가 해당 축을 따라 변경될 때마다 함수가 자동으로 실행됩니다.
사용법:
사용 가능한 축 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.
중심선 |
명령 |
|---|---|
|
|
|
|
|
|
|
|
매개변수 |
설명 |
|---|---|
|
지정된 축을 따라 조이스틱의 위치가 변경될 때마다 실행되도록 이전에 정의된 함수입니다. |
|
선택 사항입니다. 콜백 함수에 전달할 인수를 포함하는 튜플입니다. 자세한 내용은 매개변수가 있는 이벤트 사용을 참조하세요. |
# Play a sound when the left joystick moves
def beep():
brain.play_sound(SoundType.TADA)
controller.axis3.changed(beep)
건설업자#
Controller#
Controller 컨트롤러 객체를 생성합니다. 컨트롤러 객체를 수동으로 생성하는 것은 VEXcode 외부에서 컨트롤러를 구성할 때만 필요합니다.
Usage:
Controller()
매개변수 |
설명 |
|---|---|
이 생성자에는 매개변수가 없습니다. |
# Create a Controller object
my_controller = Controller()