제어 장치#

소개#

VEX EXP 컨트롤러는 버튼과 두 개의 조이스틱을 갖추고 있습니다. 컨트롤러 메서드를 사용하여 버튼 누름을 확인하고, 조이스틱 움직임을 읽고, 구성된 컨트롤러 동작을 활성화 또는 비활성화하거나, 컨트롤러 이벤트 발생 시 함수를 실행할 수 있습니다.

구성된 컨트롤러 동작은 장치 메뉴에서 설정한 컨트롤러 동작입니다. 프로젝트 진행 중에 이러한 구성된 동작을 일시적으로 활성화 또는 비활성화하려면 remote_control_code_enabled 사용하십시오.

이 페이지에서는 예시 컨트롤러 이름으로 controller 을 사용합니다. 필요에 따라 구성된 이름으로 교체하십시오.

아래는 사용 가능한 모든 방법의 목록입니다.

동작 — 구성된 컨트롤러 동작을 켜거나 끕니다.

게터 — 버튼 상태와 조이스틱 위치를 읽습니다.

  • .pressing — 지정된 버튼이 눌려 있는지 여부를 반환합니다.

  • .position — 지정된 조이스틱 축의 위치를 ​​반환합니다.

콜백 함수 — 컨트롤러 입력이 변경될 때 함수를 실행합니다.

  • .pressed — 지정된 버튼이 눌렸을 때 함수를 실행합니다.

  • .released — 지정된 버튼이 해제될 때 함수를 실행합니다.

  • .changed — 지정된 축을 따라 조이스틱의 위치가 변경될 때 함수를 실행합니다.

생성자 — 컨트롤러 객체를 수동으로 생성합니다.

  • Controller — 컨트롤러 객체를 생성합니다.

행동#

remote_control_code_enabled#

remote_control_code_enabled 장치 메뉴에서 구성된 컨트롤러 동작을 활성화 또는 비활성화하는 변수입니다. 컨트롤러에서 구성된 동작은 기본적으로 활성화되어 있습니다.

Usage:
remote_control_code_enabled = state

값

설명

True

컨트롤러에서 구성한 동작을 활성화합니다.

False

컨트롤러에 설정된 동작을 비활성화합니다.

# 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 — 지정된 버튼이 눌리지 않았습니다.

사용법:
사용 가능한 버튼 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.

EXP 컨트롤러의 앞면과 윗면입니다. 조이스틱, 방향 버튼, 액션 버튼이 노란색으로 강조 표시되어 있습니다. 컨트롤러 표면에는 좌우에 두 개의 조이스틱이 있으며, 왼쪽에는 상하 방향 버튼, 오른쪽에는 A와 B 버튼이 있습니다. 컨트롤러 윗면에는 왼쪽에 L1과 L2 버튼, 오른쪽에 R1과 R2 버튼이 있습니다.

단추

명령

buttonA

controller.buttonA.pressing() — A 버튼

buttonB

controller.buttonB.pressing() — B 버튼

buttonDown

controller.buttonDown.pressing() — 아래 버튼

buttonUp

controller.buttonUp.pressing() — 위 버튼

buttonL1

controller.buttonL1.pressing() — L1 버튼

buttonL2

controller.buttonL2.pressing() — L2 버튼

buttonL3

controller.buttonL3.pressing() — L3 버튼

buttonR1

controller.buttonR1.pressing() — R1 버튼

buttonR2

controller.buttonR2.pressing() — R2 버튼

buttonR3

controller.buttonR3.pressing() — R3 버튼

매개변수

설명

이 메서드에는 매개변수가 없습니다.

# 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 과 같은 특정 축 객체에서 호출되어야 합니다.

사용법:
사용 가능한 축 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.

EXP 컨트롤러의 앞면으로, 조이스틱 축 번호가 빨간색으로 강조 표시되어 있습니다. 컨트롤러 표면에는 왼쪽 조이스틱이 좌우 이동을 위한 축 4와 상하 이동을 위한 축 3으로 표시되어 있으며, 오른쪽 조이스틱은 좌우 이동을 위한 축 1과 상하 이동을 위한 축 2로 표시되어 있습니다.

중심선

명령

axis1

controller.axis1.position() — 오른쪽 조이스틱의 수평축

axis2

controller.axis2.position() — 오른쪽 조이스틱의 수직축

axis3

controller.axis3.position() — 왼쪽 조이스틱의 수직축

axis4

controller.axis4.position() — 왼쪽 조이스틱의 수평축

매개변수

설명

이 메서드에는 매개변수가 없습니다.

# 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 지정된 버튼이 눌렸을 때 함수를 실행합니다. 한 번 사용하면 해당 버튼이 눌릴 때마다 함수가 자동으로 실행됩니다.

사용법:
사용 가능한 버튼 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.

EXP 컨트롤러의 앞면과 윗면입니다. 조이스틱, 방향 버튼, 액션 버튼이 노란색으로 강조 표시되어 있습니다. 컨트롤러 표면에는 좌우에 두 개의 조이스틱이 있으며, 왼쪽에는 상하 방향 버튼, 오른쪽에는 A와 B 버튼이 있습니다. 컨트롤러 윗면에는 왼쪽에 L1과 L2 버튼, 오른쪽에 R1과 R2 버튼이 있습니다.

단추

명령

buttonA

controller.buttonA.pressed(callback, arg) — A 버튼

buttonB

controller.buttonB.pressed(callback, arg) — B 버튼

buttonDown

controller.buttonDown.pressed(callback, arg) — 아래 버튼

buttonUp

controller.buttonUp.pressed(callback, arg) — 위로 버튼

buttonL1

controller.buttonL1.pressed(callback, arg) — L1 버튼

buttonL2

controller.buttonL2.pressed(callback, arg) — L2 버튼

buttonL3

controller.buttonL3.pressed(callback, arg) — L3 버튼

buttonR1

controller.buttonR1.pressed(callback, arg) — R1 버튼

buttonR2

controller.buttonR2.pressed(callback, arg) — R2 버튼

buttonR3

controller.buttonR3.pressed(callback, arg) — R3 버튼

매개변수

설명

callback

지정된 버튼이 눌릴 때마다 실행되도록 미리 정의된 함수.

arg

선택 사항입니다. 콜백 함수에 전달할 인수를 포함하는 튜플입니다. 자세한 내용은 매개변수가 있는 이벤트 사용을 참조하세요.

# Drive forward when R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

controller.buttonR1.pressed(drive_forward)

.released#

.released 지정된 버튼에서 손을 떼면 함수를 실행합니다. 한 번 사용하면 해당 버튼에서 손을 뗄 때마다 함수가 자동으로 실행됩니다.

사용법:
사용 가능한 버튼 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.

EXP 컨트롤러의 앞면과 윗면입니다. 조이스틱, 방향 버튼, 액션 버튼이 노란색으로 강조 표시되어 있습니다. 컨트롤러 표면에는 좌우에 두 개의 조이스틱이 있으며, 왼쪽에는 상하 방향 버튼, 오른쪽에는 A와 B 버튼이 있습니다. 컨트롤러 윗면에는 왼쪽에 L1과 L2 버튼, 오른쪽에 R1과 R2 버튼이 있습니다.

단추

명령

buttonA

controller.buttonA.released(callback, arg) — A 버튼

buttonB

controller.buttonB.released(callback, arg) — B 버튼

buttonDown

controller.buttonDown.released(callback, arg) — 아래 버튼

buttonUp

controller.buttonUp.released(callback, arg) — 위로 버튼

buttonL1

controller.buttonL1.released(callback, arg) — L1 버튼

buttonL2

controller.buttonL2.released(callback, arg) — L2 버튼

buttonL3

controller.buttonL3.released(callback, arg) — L3 버튼

buttonR1

controller.buttonR1.released(callback, arg) — R1 버튼

buttonR2

controller.buttonR2.released(callback, arg) — R2 버튼

buttonR3

controller.buttonR3.released(callback, arg) — R3 버튼

매개변수

설명

callback

지정된 버튼이 해제될 때마다 실행되도록 이전에 정의된 함수.

arg

선택 사항입니다. 콜백 함수에 전달할 인수를 포함하는 튜플입니다. 자세한 내용은 매개변수가 있는 이벤트 사용을 참조하세요.

# Stop driving when R1 is released
def stop_driving():
    drivetrain.stop()

controller.buttonR1.released(stop_driving)

.changed#

.changed 조이스틱의 위치가 지정된 축을 따라 변경될 때 함수를 실행합니다. 한 번 사용하면 조이스틱의 위치가 해당 축을 따라 변경될 때마다 함수가 자동으로 실행됩니다.

사용법:
사용 가능한 축 객체 중 하나를 이 메서드와 함께 사용할 수 있습니다.

EXP 컨트롤러의 앞면으로, 조이스틱 축 번호가 빨간색으로 강조 표시되어 있습니다. 컨트롤러 표면에는 왼쪽 조이스틱이 좌우 이동을 위한 축 4와 상하 이동을 위한 축 3으로 표시되어 있으며, 오른쪽 조이스틱은 좌우 이동을 위한 축 1과 상하 이동을 위한 축 2로 표시되어 있습니다.

중심선

명령

axis1

controller.axis1.changed(callback, arg) — 오른쪽 조이스틱의 수평축

axis2

controller.axis2.changed(callback, arg) — 오른쪽 조이스틱의 수직축

axis3

controller.axis3.changed(callback, arg) — 왼쪽 조이스틱의 수직축

axis4

controller.axis4.changed(callback, arg) — 왼쪽 조이스틱의 수평축

매개변수

설명

callback

지정된 축을 따라 조이스틱의 위치가 변경될 때마다 실행되도록 이전에 정의된 함수입니다.

arg

선택 사항입니다. 콜백 함수에 전달할 인수를 포함하는 튜플입니다. 자세한 내용은 매개변수가 있는 이벤트 사용을 참조하세요.

# 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()