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.
remote_control_code_enabled— Activa ou desactiva as acções do controlador configuradas no menu Dispositivos.
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.
Controller— Cria 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 |
|---|---|
|
Activa as ações configuradas pelo controlador. |
|
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:
Botão |
Comando |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
Eixo |
Comando |
|---|---|
|
|
|
|
|
|
|
|
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:
Botão |
Comando |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parâmetro |
Descrição |
|---|---|
|
Uma função previamente definida para ser executada sempre que o botão especificado for premido. |
|
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:
Botão |
Comando |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parâmetro |
Descrição |
|---|---|
|
Uma função previamente definida para ser executada sempre que o botão especificado for libertado. |
|
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:
Eixo |
Comando |
|---|---|
|
|
|
|
|
|
|
|
Parâmetro |
Descrição |
|---|---|
|
Uma função previamente definida para ser executada sempre que a posição do joystick se altere ao longo do eixo especificado. |
|
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()