Controlador#

Introdução#

O comando VEX EXP possui botões e dois joysticks. Os métodos do controlador podem ser utilizados para verificar os toques dos botões, ler o movimento do joystick, ativar ou desativar as ações configuradas do controlador ou executar funções quando ocorrem eventos do controlador.

As ações de controlo 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 como nome de controlador de exemplo. Substitua-o pelo nome que configurou, se necessário.

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

Ação — Ativar ou desativar as ações configuradas 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ção#

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.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

Getters#

.pressing#

.pressing retorna se um botão específico no controlador está a ser pressionado no momento. Este método deve ser chamado num objeto de botão específico, como controller.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 superior do Controlador EXP com os joysticks, botões de setas e botões de ação destacados a amarelo. Na superfície do comando, encontram-se dois joysticks à esquerda e à direita, com botões de seta para cima e para baixo à esquerda e botões A e B à direita. Na parte superior do comando, estão os botões L1 e L2 à esquerda e os botões R1 e R2 à direita.

Botão

Comando

buttonA

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

buttonB

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

buttonDown

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

buttonUp

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

buttonL1

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

buttonL2

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

buttonL3

controller.buttonL3.pressing() — O botão L3

buttonR1

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

buttonR2

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

buttonR3

controller.buttonR3.pressing() — O botão R3

Parâmetros

Descrição

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

# Turn right while L1 is pressed
while True:
    if controller.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.axis1.

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

A parte frontal do controlador EXP com os números dos eixos do joystick destacados a vermelho. Na superfície do controlador, o joystick esquerdo está identificado como Eixo 4 para movimento para a esquerda e para a direita e Eixo 3 para movimento para cima e para baixo, enquanto o joystick direito está identificado como Eixo 1 para movimento para a esquerda e para a direita e Eixo 2 para movimento para cima e para baixo.

Eixo

Comando

axis1

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

axis2

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

axis3

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

axis4

controller.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.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.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 superior do Controlador EXP com os joysticks, botões de setas e botões de ação destacados a amarelo. Na superfície do comando, encontram-se dois joysticks à esquerda e à direita, com botões de seta para cima e para baixo à esquerda e botões A e B à direita. Na parte superior do comando, estão os botões L1 e L2 à esquerda e os botões R1 e R2 à direita.

Botão

Comando

buttonA

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

buttonB

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

buttonDown

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

buttonUp

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

buttonL1

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

buttonL2

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

buttonL3

controller.buttonL3.pressed(callback, arg) — O botão L3

buttonR1

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

buttonR2

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

buttonR3

controller.buttonR3.pressed(callback, arg) — O botão R3

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 R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

controller.buttonR1.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 superior do Controlador EXP com os joysticks, botões de setas e botões de ação destacados a amarelo. Na superfície do comando, encontram-se dois joysticks à esquerda e à direita, com botões de seta para cima e para baixo à esquerda e botões A e B à direita. Na parte superior do comando, estão os botões L1 e L2 à esquerda e os botões R1 e R2 à direita.

Botão

Comando

buttonA

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

buttonB

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

buttonDown

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

buttonUp

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

buttonL1

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

buttonL2

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

buttonL3

controller.buttonL3.released(callback, arg) — O botão L3

buttonR1

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

buttonR2

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

buttonR3

controller.buttonR3.released(callback, arg) — O botão R3

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.

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

controller.buttonR1.released(stop_driving)

.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:

A parte frontal do controlador EXP com os números dos eixos do joystick destacados a vermelho. Na superfície do controlador, o joystick esquerdo está identificado como Eixo 4 para movimento para a esquerda e para a direita e Eixo 3 para movimento para cima e para baixo, enquanto o joystick direito está identificado como Eixo 1 para movimento para a esquerda e para a direita e Eixo 2 para movimento para cima e para baixo.

Eixo

Comando

axis1

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

axis2

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

axis3

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

axis4

controller.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 beep():
    brain.play_sound(SoundType.TADA)

controller.axis3.changed(beep)

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

Parâmetros

Descrição

Este construtor não possui parâmetros.

# Create a Controller object
my_controller = Controller()