제어 장치#

소개#

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

IQ(2세대) 브레인은 IQ(2세대) 또는 IQ(1세대) 컨트롤러에 연결할 수 있습니다. IQ(1세대) 컨트롤러에는 파란색 스마트 라디오가 설치되어 있어야 합니다.

구성된 컨트롤러 동작은 장치 메뉴에서 설정한 컨트롤러 동작입니다. 프로젝트 진행 중에 이러한 구성된 동작을 일시적으로 활성화 또는 비활성화하려면 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

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

# Use custom controller code, then re-enable configured actions
remote_control_code_enabled = False

while True:
    if controller.axisA.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axisA.position() < 0:
        drivetrain.drive(REVERSE)
    elif controller.buttonEUp.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

게터스#

.pressing#

.pressing 컨트롤러의 특정 버튼이 현재 눌려 있는지 여부를 반환합니다. 이 메서드는 controller.buttonEUp 과 같은 특정 버튼 객체에서 호출해야 합니다.

  • True — 지정된 버튼이 눌러지고 있습니다.

  • False — 지정된 버튼이 눌리지 않았습니다.

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

IQ 2세대 컨트롤러의 앞면과 뒷면 모습. 모든 버튼이 노란색으로 강조 표시되어 있다. 컨트롤러 표면에는 왼쪽 위와 오른쪽 위 모서리에 두 개의 조이스틱 버튼이 있으며, 왼쪽 조이스틱 아래에는 E 위/아래 버튼이, 오른쪽 조이스틱 아래에는 F 위/아래 버튼이 있다. 컨트롤러 뒷면에는 왼쪽과 오른쪽에 각각 L 위/아래 버튼과 R 위/아래 버튼이 있다.

단추

명령

buttonEDown

controller.buttonEDown.pressing() — E ▼ 버튼

buttonEUp

controller.buttonEUp.pressing() — E ▲ 버튼

buttonFDown

controller.buttonFDown.pressing() — F ▼ 버튼

buttonFUp

controller.buttonFUp.pressing() — F ▲ 버튼

buttonL3

controller.buttonL3.pressing() — 왼쪽 조이스틱 버튼, IQ(2세대) 컨트롤러 전용

buttonLDown

controller.buttonLDown.pressing() — L ▼ 버튼

buttonLUp

controller.buttonLUp.pressing() — L ▲ 버튼

buttonR3

controller.buttonR3.pressing() — 오른쪽 조이스틱 버튼, IQ(2세대) 컨트롤러 전용

buttonRDown

controller.buttonRDown.pressing() — R ▼ 버튼

buttonRUp

controller.buttonRUp.pressing() — R ▲ 버튼

매개변수

설명

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

# Turn right while E Up is held
while True:
    if controller.buttonEUp.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position 조이스틱 축의 위치를 -100 ~ 100 사이의 숫자로 반환합니다.

이 메서드는 controller.axisA 와 같은 특정 축 객체에서 호출되어야 합니다.

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

IQ 2세대 컨트롤러의 4개 조이스틱 축이 강조 표시되어 있습니다. 왼쪽 조이스틱에서 A축은 수직이고 B축은 수평입니다. 오른쪽 조이스틱에서 C축은 수평이고 D축은 수직입니다.

중심선

명령

axisA

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

axisB

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

axisC

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

axisD

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

매개변수

설명

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

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller.axisB.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axisB.position() < -10:
        drivetrain.turn(LEFT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

콜백#

.pressed#

.pressed 지정된 버튼이 눌렸을 때 함수를 실행합니다. 한 번 사용하면 해당 버튼이 눌릴 때마다 함수가 자동으로 실행됩니다.

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

IQ 2세대 컨트롤러의 앞면과 뒷면 모습. 모든 버튼이 노란색으로 강조 표시되어 있다. 컨트롤러 표면에는 왼쪽 위와 오른쪽 위 모서리에 두 개의 조이스틱 버튼이 있으며, 왼쪽 조이스틱 아래에는 E 위/아래 버튼이, 오른쪽 조이스틱 아래에는 F 위/아래 버튼이 있다. 컨트롤러 뒷면에는 왼쪽과 오른쪽에 각각 L 위/아래 버튼과 R 위/아래 버튼이 있다.

단추

명령

buttonEDown

controller.buttonEDown.pressed(callback, arg) — E ▼ 버튼

buttonEUp

controller.buttonEUp.pressed(callback, arg) — E ▲ 버튼

buttonFDown

controller.buttonFDown.pressed(callback, arg) — F ▼ 버튼

buttonFUp

controller.buttonFUp.pressed(callback, arg) — F ▲ 버튼

buttonL3

controller.buttonL3.pressed(callback, arg) — 왼쪽 조이스틱 버튼, IQ(2세대) 컨트롤러 전용

buttonLDown

controller.buttonLDown.pressed(callback, arg) — L ▼ 버튼

buttonLUp

controller.buttonLUp.pressed(callback, arg) — L ▲ 버튼

buttonR3

controller.buttonR3.pressed(callback, arg) — 오른쪽 조이스틱 버튼, IQ(2세대) 컨트롤러 전용

buttonRDown

controller.buttonRDown.pressed(callback, arg) — R ▼ 버튼

buttonRUp

controller.buttonRUp.pressed(callback, arg) — R ▲ 버튼

매개변수

설명

callback

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

arg

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

# Drive forward when E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.pressed(drive_forward)

.released#

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

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

IQ 2세대 컨트롤러의 앞면과 뒷면 모습. 모든 버튼이 노란색으로 강조 표시되어 있다. 컨트롤러 표면에는 왼쪽 위와 오른쪽 위 모서리에 두 개의 조이스틱 버튼이 있으며, 왼쪽 조이스틱 아래에는 E 위/아래 버튼이, 오른쪽 조이스틱 아래에는 F 위/아래 버튼이 있다. 컨트롤러 뒷면에는 왼쪽과 오른쪽에 각각 L 위/아래 버튼과 R 위/아래 버튼이 있다.

단추

명령

buttonEDown

controller.buttonEDown.released(callback, arg) — E ▼ 버튼

buttonEUp

controller.buttonEUp.released(callback, arg) — E ▲ 버튼

buttonFDown

controller.buttonFDown.released(callback, arg) — F ▼ 버튼

buttonFUp

controller.buttonFUp.released(callback, arg) — F ▲ 버튼

buttonL3

controller.buttonL3.released(callback, arg) — 왼쪽 조이스틱 버튼, IQ(2세대) 컨트롤러 전용

buttonLDown

controller.buttonLDown.released(callback, arg) — L ▼ 버튼

buttonLUp

controller.buttonLUp.released(callback, arg) — L ▲ 버튼

buttonR3

controller.buttonR3.released(callback, arg) — 오른쪽 조이스틱 버튼, IQ(2세대) 컨트롤러 전용

buttonRDown

controller.buttonRDown.released(callback, arg) — R ▼ 버튼

buttonRUp

controller.buttonRUp.released(callback, arg) — R ▲ 버튼

매개변수

설명

callback

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

arg

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

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

controller.buttonEUp.released(stop_driving)

.changed#

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

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

IQ 2세대 컨트롤러의 4개 조이스틱 축이 강조 표시되어 있습니다. 왼쪽 조이스틱에서 A축은 수직이고 B축은 수평입니다. 오른쪽 조이스틱에서 C축은 수평이고 D축은 수직입니다.

중심선

명령

axisA

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

axisB

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

axisC

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

axisD

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

매개변수

설명

callback

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

arg

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

# Play a sound when the right joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axisD.changed(beep)

건설업자#

Controller#

Controller 컨트롤러 객체를 생성합니다. 컨트롤러 객체를 수동으로 생성하는 것은 VEXcode 외부에서 컨트롤러를 구성할 때만 필요합니다.

Usage:
Controller()

매개변수

설명

이 생성자에는 매개변수가 없습니다.

# Create a Controller object
my_controller = Controller()