제어 장치#

소개#

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

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

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

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

동작 — 컨트롤러를 진동시키거나 설정된 컨트롤러 동작을 활성화/비활성화합니다.

  • rumble — 컨트롤러에서 진동 패턴을 재생합니다.

  • remote_control_code_enabled — 장치 메뉴에 구성된 컨트롤러 작업을 활성화 또는 비활성화합니다.

화면 — 컨트롤러 화면에 텍스트와 숫자를 표시합니다.

  • print — 컨트롤러 화면에 텍스트, 숫자 또는 변수 값을 표시합니다.

  • set_cursor — 컨트롤러 화면에서 커서를 지정된 행과 열로 이동합니다.

  • column — 컨트롤러 화면에서 현재 커서 열을 반환합니다.

  • row — 컨트롤러 화면에서 현재 커서 행을 반환합니다.

  • clear_screen — 컨트롤러 화면을 지웁니다.

  • clear_row — 컨트롤러 화면에서 한 행을 지웁니다.

  • next_row — 컨트롤러 화면에서 커서를 다음 행으로 이동합니다.

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

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

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

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

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

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

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

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

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

행위#

rumble#

rumble 컨트롤러에서 진동 패턴을 재생합니다. 패턴 문자열에서 마침표는 짧은 진동, 하이픈은 긴 진동, 공백은 일시 정지를 나타냅니다.

Usage:
controller_1.rumble(pattern)

매개변수

설명

pattern

마침표, 하이픈, 공백으로 이루어진 문자열로, 진동 패턴을 나타냅니다.

# Rumble the Controller with a short-short-long-long pattern
controller_1.rumble("..--")

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_1.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller_1.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use Controller configured actions again
    elif controller_1.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

화면#

V5 컨트롤러 화면은 텍스트와 숫자를 표시하기 위한 3행 19열 구조입니다.

V5 컨트롤러 화면의 스크린샷으로, 인쇄 가능한 영역에 행과 열이 표시되어 있습니다. 1행 1열은 왼쪽 상단 모서리에서 시작하고 3행 19열은 오른쪽 하단 모서리에 있습니다.

print#

controller_1.screen.print 현재 커서 위치를 사용하여 컨트롤러 화면에 텍스트, 숫자 또는 변수 값을 표시합니다.

Usage:
controller_1.screen.print(value, sep, precision)

매개변수

설명

value

컨트롤러 화면에 표시할 텍스트, 숫자 또는 변수 값입니다. 여러 값을 출력하려면 쉼표로 구분하십시오.

sep

선택 사항입니다. 값 사이에 넣을 문자열입니다. sep=”- “과 같이 키워드 인수로 작성해야 합니다. 기본값은 ” “ 입니다.

precision

선택 사항입니다. 간단한 숫자를 출력할 때 표시할 소수점 자릿수입니다. 이 값은 precision=2과 같이 키워드 인수로 작성해야 합니다. 기본값은 2 입니다.

# Print a number on the Controller screen
controller_1.screen.print(1)

# Print multiple numbers separated by hyphens
controller_1.screen.print(1, 2, 3, 4, sep="-")

# Print a number using one decimal place
controller_1.screen.print(1 / 3, precision=1)

set_cursor#

set_cursor 컨트롤러 화면의 지정된 행과 열로 커서를 이동합니다. 다음에 출력될 값은 해당 위치에 나타납니다.

Usage:
controller_1.screen.set_cursor(row, col)

매개변수

설명

row

커서의 행은 1 부터 3 까지입니다.

col

커서의 열은 1 부터 19 까지입니다.

# Print text at row 2, column 1
controller_1.screen.set_cursor(2, 1)
controller_1.screen.print("Ready")

column#

column 컨트롤러 화면에 텍스트가 출력될 현재 열을 반환합니다.

Usage:
controller_1.screen.column()

매개변수

설명

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

# Print the current column number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.column())

row#

row 컨트롤러 화면에 텍스트가 출력될 현재 행을 반환합니다.

Usage:
controller_1.screen.row()

매개변수

설명

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

# Print the current row number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.row())

clear_screen#

clear_screen 컨트롤러 화면을 지우고 커서를 시작 위치로 되돌립니다.

Usage:
controller_1.screen.clear_screen()

매개변수

설명

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

# Print text, then clear the Controller screen
controller_1.screen.print("VEX V5")
wait(2, SECONDS)
controller_1.screen.clear_screen()

clear_row#

clear_row 컨트롤러 화면에서 한 행을 지웁니다.

Usage:
controller_1.screen.clear_row(row)

매개변수

설명

row

선택 사항입니다. 지울 행을 1 부터 3까지 지정합니다. 행을 지정하지 않으면 현재 커서 행이 지워집니다.

# Clear row 2 on the Controller screen
controller_1.screen.clear_row(2)

next_row#

next_row 컨트롤러 화면의 다음 행의 1열로 커서를 이동합니다. 다음에 출력될 값은 해당 행에 나타납니다.

Usage:
controller_1.screen.next_row()

매개변수

설명

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

# Print on two rows
controller_1.screen.print("VEX V5")
controller_1.screen.next_row()
controller_1.screen.print("Controller")

게터스#

.pressing#

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

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

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

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

V5 컨트롤러의 앞면과 뒷면. 버튼은 노란색으로 강조 표시되어 있습니다. 컨트롤러 앞면에는 왼쪽에 위, 아래, 왼쪽, 오른쪽 화살표 버튼이 있고, 오른쪽에는 12시 방향부터 시계 방향으로 X, A, B, Y 버튼이 있습니다. 컨트롤러 뒷면에는 왼쪽과 오른쪽에 각각 L1, L2, R1, R2 버튼이 있습니다.

단추

명령

buttonA

controller_1.buttonA.pressing() — A 버튼

buttonB

controller_1.buttonB.pressing() — B 버튼

buttonX

controller_1.buttonX.pressing() — X 버튼

buttonY

controller_1.buttonY.pressing() — Y 버튼

buttonDown

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

buttonUp

controller_1.buttonUp.pressing() — 위 버튼

buttonLeft

controller_1.buttonLeft.pressing() — 왼쪽 버튼

buttonRight

controller_1.buttonRight.pressing() — 오른쪽 버튼

buttonL1

controller_1.buttonL1.pressing() — L1 버튼

buttonL2

controller_1.buttonL2.pressing() — L2 버튼

buttonR1

controller_1.buttonR1.pressing() — R1 버튼

buttonR2

controller_1.buttonR2.pressing() — R2 버튼

매개변수

설명

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

# Turn right while L1 is pressed
while True:
    if controller_1.buttonL1.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

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

이 메서드는 controller_1.axis1 과 같은 특정 축 객체에서 호출되어야 합니다.

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

조이스틱 주변의 축에 레이블이 지정된 VEX V5 컨트롤러. 축 1과 2는 오른쪽 조이스틱 주변에 있고, 축 3과 4는 왼쪽 조이스틱 주변에 있습니다.

중심선

명령

axis1

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

axis2

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

axis3

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

axis4

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

매개변수

설명

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

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

콜백#

.pressed#

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

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

V5 컨트롤러의 앞면과 뒷면. 버튼은 노란색으로 강조 표시되어 있습니다. 컨트롤러 앞면에는 왼쪽에 위, 아래, 왼쪽, 오른쪽 화살표 버튼이 있고, 오른쪽에는 12시 방향부터 시계 방향으로 X, A, B, Y 버튼이 있습니다. 컨트롤러 뒷면에는 왼쪽과 오른쪽에 각각 L1, L2, R1, R2 버튼이 있습니다.

단추

명령

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressed(callback, arg) — X 버튼

buttonY

controller_1.buttonY.pressed(callback, arg) — Y 버튼

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — 왼쪽 버튼

buttonRight

controller_1.buttonRight.pressed(callback, arg) — 오른쪽 버튼

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

매개변수

설명

callback

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

arg

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

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

controller_1.buttonA.pressed(drive_forward)

.released#

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

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

V5 컨트롤러의 앞면과 뒷면. 버튼은 노란색으로 강조 표시되어 있습니다. 컨트롤러 앞면에는 왼쪽에 위, 아래, 왼쪽, 오른쪽 화살표 버튼이 있고, 오른쪽에는 12시 방향부터 시계 방향으로 X, A, B, Y 버튼이 있습니다. 컨트롤러 뒷면에는 왼쪽과 오른쪽에 각각 L1, L2, R1, R2 버튼이 있습니다.

단추

명령

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.released(callback, arg) — X 버튼

buttonY

controller_1.buttonY.released(callback, arg) — Y 버튼

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.released(callback, arg) — 왼쪽 버튼

buttonRight

controller_1.buttonRight.released(callback, arg) — 오른쪽 버튼

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

매개변수

설명

callback

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

arg

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

# Drive backward when A is released
def back_up():
    drivetrain.drive_for(REVERSE, 100, MM)

controller_1.buttonA.released(back_up)

.changed#

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

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

조이스틱 주변의 축에 레이블이 지정된 VEX V5 컨트롤러. 축 1과 2는 오른쪽 조이스틱 주변에 있고, 축 3과 4는 왼쪽 조이스틱 주변에 있습니다.

중심선

명령

axis1

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

axis2

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

axis3

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

axis4

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

매개변수

설명

callback

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

arg

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

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

controller_1.axis4.changed(tada_sound)

건설업자#

Controller#

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

Usage:
Controller(controller_type)

매개변수

설명

controller_type

Optional. The Controller type to create: PRIMARY for the primary Controller connected to the Brain or PARTNER for the second Controller connected to the Brain.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)