Controlador#

Introdução#

O Controlador V5 possui botões, dois joysticks, um motor de vibração e um ecrã. Os métodos do controlador podem ser utilizados para verificar pressionamentos de botões, ler o movimento do joystick, vibrar o controlador, ativar ou desativar ações configuradas no controlador, executar funções quando ocorrem eventos do controlador ou exibir texto no ecrã do controlador.

As ações do controlador configuradas são comportamentos do controlador definidos no menu Dispositivos. Utilize remote_control_code_enabled para ativar ou desativar temporariamente estas ações configuradas durante um projeto.

Esta página utiliza controller_1 como exemplo de nome do controlador. Substitua-o pelo nome que configurou, se necessário.

Segue-se uma lista de todos os métodos disponíveis:

Ações — Faça vibrar o comando ou ative/desative as ações configuradas no comando.

  • rumble — Reproduz um padrão de vibração no controlador.

  • remote_control_code_enabled — Activa ou desactiva as acções do Controlador configuradas no menu Dispositivos.

Ecrã — Apresenta texto e números no ecrã do controlador.

  • print — Apresenta o texto, os números ou os valores das variáveis ​​no ecrã do Controlador.

  • set_cursor — Move o cursor para uma linha e coluna especificadas no ecrã do Controlador.

  • column — Retorna a coluna actual do cursor no ecrã do Controlador.

  • row — Retorna a linha actual do cursor no ecrã do Controlador.

  • clear_screen — Limpa o ecrã do Controlador.

  • clear_row — Limpa uma linha no ecrã do Controlador.

  • next_row — Move o cursor para a linha seguinte no ecrã do Controlador.

Getters — Lêm os estados dos botões e as posições dos joysticks.

  • .pressing — Retorna se um botão especificado está a ser pressionado.

  • .position — Devolve a posição de um eixo de joystick especificado.

Callbacks — Executam funções quando a entrada do Controlador é alterada.

  • .pressed — Executa uma função quando um botão especificado é premido.

  • .released — Executa uma função quando um botão especificado é libertado.

  • .changed — Executa uma função quando a posição do joystick muda ao longo de um eixo especificado.

Construtor — Cria manualmente um objeto Controller.

Ações#

rumble#

rumble reproduz um padrão de vibração no controlador. Na sequência do padrão, os pontos representam vibrações curtas, os hífens representam vibrações longas e os espaços representam pausas.

Usage:
controller_1.rumble(pattern)

Parâmetro

Descrição

pattern

Uma sequência de pontos, hífens e espaços que representa o padrão de vibração.

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

remote_control_code_enabled#

A variável remote_control_code_enabled ( remote_control_code_enabled activa ou desactiva as acções do controlador configuradas no menu Dispositivos. As ações configuradas no controlador estão ativadas por defeito.

Usage:
remote_control_code_enabled = state

Valor

Descrição

True

Activa as ações configuradas pelo Controlador.

False

Desativa as ações configuradas pelo controlador.

# 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

Ecrã#

O ecrã do controlador V5 possui 3 linhas e 19 colunas para apresentar texto e números.

Uma captura de ecrã do ecrã do Controlador V5, mostrando as linhas e colunas na área imprimível. A linha 1, coluna 1, começa no canto superior esquerdo e a linha 3, coluna 19, estão no canto inferior direito.

print#

controller_1.screen.print apresenta texto, números ou valores de variáveis ​​no ecrã do Controlador utilizando a posição atual do cursor.

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

Parâmetro

Descrição

value

O texto, o número ou o valor da variável a ser apresentado no ecrã do Controlador. Pode ser impresso mais do que um valor, separando-os por vírgulas.

sep

Opcional. Uma string para colocar entre os valores. Deve ser escrita como um argumento nomeado, como por exemplo sep=»- “. O predefinido é ” «.

precision

Opcional. O número de casas decimais a apresentar ao imprimir números simples. Deve ser escrito como um argumento de palavra-chave, como precision=2. O predefinido é 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 move o cursor para uma linha e coluna específicas no ecrã Controlador. O próximo valor impresso aparecerá nessa posição.

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

Parâmetro

Descrição

row

A linha do cursor, de 1 a 3.

col

A coluna do cursor, de 1 a 19.

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

column#

A coluna column devolvem a coluna atual onde o texto será impresso no ecrã do Controlador.

Usage:
controller_1.screen.column()

Parâmetros

Descrição

Este método não tem parâmetros.

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

row#

A linha row devolvem a linha atual onde o texto será impresso no ecrã do Controlador.

Usage:
controller_1.screen.row()

Parâmetros

Descrição

Este método não tem parâmetros.

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

clear_screen#

clear_screen limpa o ecrã do controlador e move o cursor de volta para a posição inicial.

Usage:
controller_1.screen.clear_screen()

Parâmetros

Descrição

Este método não tem parâmetros.

# 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 limpa uma linha no ecrã do Controlador.

Usage:
controller_1.screen.clear_row(row)

Parâmetro

Descrição

row

Opcional. A linha a limpar, de 1 a 3Se não for fornecida nenhuma linha, a linha actual do cursor será limpa.

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

next_row#

next_row move o cursor para a coluna 1 na linha seguinte do ecrã do Controlador. O próximo valor impresso aparecerá nessa linha.

Usage:
controller_1.screen.next_row()

Parâmetros

Descrição

Este método não tem parâmetros.

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

Getters#

.pressing#

.pressing retorna se um botão específico no Controlador estiver a ser pressionado no momento. Este método deve ser chamado num objeto de botão específico, como controller_1.buttonA.

  • True — O botão especificado está a ser premido.

  • False — O botão especificado não está a ser premido.

Utilização:
Um dos objetos de botão disponíveis pode ser utilizado com este método:

A parte frontal e traseira do Controlador V5 com os botões destacados a amarelo. Na superfície do controlador estão os botões de seta para cima, para baixo, para a esquerda e para a direita à esquerda, e os botões X, A, B e Y no sentido dos ponteiros do relógio a partir das 12 horas à direita. Na parte traseira do comando estão L1, L2, R1 e R2 nos lados esquerdo e direito, respectivamente.

Botão

Comando

buttonA

controller_1.buttonA.pressing() — O botão A

buttonB

controller_1.buttonB.pressing() — O botão B

buttonX

controller_1.buttonX.pressing() — O botão X

buttonY

controller_1.buttonY.pressing() — O botão Y

buttonDown

controller_1.buttonDown.pressing() — O botão Para baixo

buttonUp

controller_1.buttonUp.pressing() — O botão para cima

buttonLeft

controller_1.buttonLeft.pressing() — O botão Esquerdo

buttonRight

controller_1.buttonRight.pressing() — O botão Direita

buttonL1

controller_1.buttonL1.pressing() — O botão L1

buttonL2

controller_1.buttonL2.pressing() — O botão L2

buttonR1

controller_1.buttonR1.pressing() — O botão R1

buttonR2

controller_1.buttonR2.pressing() — O botão R2

Parâmetros

Descrição

Este método não tem parâmetros.

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

    wait(20, MSEC)

.position#

.position devolve a posição de um eixo do joystick como um número de -100 a 100.

Este método deve ser chamado num objeto de eixo específico, como controller_1.axis1.

Utilização:
Um dos objetos de eixo disponíveis pode ser utilizado com este método:

Um controlador VEX V5 com os eixos em redor dos joysticks identificados. Os eixos 1 e 2 estão à volta do joystick direito e os eixos 3 e 4 estão à volta do joystick esquerdo.

Eixo

Comando

axis1

controller_1.axis1.position() — O eixo horizontal do joystick direito

axis2

controller_1.axis2.position() — O eixo vertical do joystick direito

axis3

controller_1.axis3.position() — O eixo vertical do joystick esquerdo

axis4

controller_1.axis4.position() — O eixo horizontal do joystick esquerdo

Parâmetros

Descrição

Este método não tem parâmetros.

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

Retornos de chamada#

.pressed#

.pressed executa uma função quando o botão especificado é premido. Uma vez utilizada, a função será executada automaticamente sempre que este botão for pressionado.

Utilização:
Um dos objetos de botão disponíveis pode ser utilizado com este método:

A parte frontal e traseira do Controlador V5 com os botões destacados a amarelo. Na superfície do controlador estão os botões de seta para cima, para baixo, para a esquerda e para a direita à esquerda, e os botões X, A, B e Y no sentido dos ponteiros do relógio a partir das 12 horas à direita. Na parte traseira do comando estão L1, L2, R1 e R2 nos lados esquerdo e direito, respectivamente.

Botão

Comando

buttonA

controller_1.buttonA.pressed(callback, arg) — O botão A

buttonB

controller_1.buttonB.pressed(callback, arg) — O botão B

buttonX

controller_1.buttonX.pressed(callback, arg) — O botão X

buttonY

controller_1.buttonY.pressed(callback, arg) — O botão Y

buttonDown

controller_1.buttonDown.pressed(callback, arg) — O botão Para baixo

buttonUp

controller_1.buttonUp.pressed(callback, arg) — O botão para cima

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — O botão Esquerda

buttonRight

controller_1.buttonRight.pressed(callback, arg) — O botão Direito

buttonL1

controller_1.buttonL1.pressed(callback, arg) — O botão L1

buttonL2

controller_1.buttonL2.pressed(callback, arg) — O botão L2

buttonR1

controller_1.buttonR1.pressed(callback, arg) — O botão R1

buttonR2

controller_1.buttonR2.pressed(callback, arg) — O botão R2

Parâmetro

Descrição

callback

Uma função previamente definida para ser executada sempre que o botão especificado for premido.

arg

Opcional. Uma tupla contendo argumentos para passar para a função de callback. Consulte Utilizar eventos com parâmetros para obter mais informações.

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

controller_1.buttonA.pressed(drive_forward)

.released#

.released executa uma função quando o botão especificado é libertado. Uma vez utilizada, a função será executada automaticamente sempre que este botão for libertado.

Utilização:
Um dos objetos de botão disponíveis pode ser utilizado com este método:

A parte frontal e traseira do Controlador V5 com os botões destacados a amarelo. Na superfície do controlador estão os botões de seta para cima, para baixo, para a esquerda e para a direita à esquerda, e os botões X, A, B e Y no sentido dos ponteiros do relógio a partir das 12 horas à direita. Na parte traseira do comando estão L1, L2, R1 e R2 nos lados esquerdo e direito, respectivamente.

Botão

Comando

buttonA

controller_1.buttonA.released(callback, arg) — O botão A

buttonB

controller_1.buttonB.released(callback, arg) — O botão B

buttonX

controller_1.buttonX.released(callback, arg) — O botão X

buttonY

controller_1.buttonY.released(callback, arg) — O botão Y

buttonDown

controller_1.buttonDown.released(callback, arg) — O botão Para baixo

buttonUp

controller_1.buttonUp.released(callback, arg) — O botão para cima

buttonLeft

controller_1.buttonLeft.released(callback, arg) — O botão Esquerda

buttonRight

controller_1.buttonRight.released(callback, arg) — O botão Direita

buttonL1

controller_1.buttonL1.released(callback, arg) — O botão L1

buttonL2

controller_1.buttonL2.released(callback, arg) — O botão L2

buttonR1

controller_1.buttonR1.released(callback, arg) — O botão R1

buttonR2

controller_1.buttonR2.released(callback, arg) — O botão R2

Parâmetro

Descrição

callback

Uma função previamente definida para ser executada sempre que o botão especificado for libertado.

arg

Opcional. Uma tupla contendo argumentos para passar para a função de callback. Consulte Utilizar eventos com parâmetros para obter mais informações.

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

controller_1.buttonA.released(back_up)

.changed#

.changed executa uma função quando a posição do joystick muda ao longo do eixo especificado. Uma vez utilizada, a função será executada automaticamente sempre que a posição do joystick se altere ao longo desse eixo.

Utilização:
Um dos objetos de eixo disponíveis pode ser utilizado com este método:

Um controlador VEX V5 com os eixos em redor dos joysticks identificados. Os eixos 1 e 2 estão à volta do joystick direito e os eixos 3 e 4 estão à volta do joystick esquerdo.

Eixo

Comando

axis1

controller_1.axis1.changed(callback, arg) — O eixo horizontal do joystick direito

axis2

controller_1.axis2.changed(callback, arg) — O eixo vertical do joystick direito

axis3

controller_1.axis3.changed(callback, arg) — O eixo vertical do joystick esquerdo

axis4

controller_1.axis4.changed(callback, arg) — O eixo horizontal do joystick esquerdo

Parâmetro

Descrição

callback

Uma função previamente definida para ser executada sempre que a posição do joystick se altere ao longo do eixo especificado.

arg

Opcional. Uma tupla contendo argumentos para passar para a função de callback. Consulte Utilizar eventos com parâmetros para obter mais informações.

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

controller_1.axis4.changed(tada_sound)

Construtores#

Controller#

O comando Controller cria um objeto Controller. A criação manual de um objeto Controller só é necessária quando se configura um controlador fora do VEXcode.

Usage:
Controller(controller_type)

Parâmetro

Descrição

controller_type

Opcional. O tipo de controlador a criar: PRIMARY para o controlador primário ligado ao cérebro ou PARTNER para o segundo controlador ligado ao cérebro.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)