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.
Controller— Cria 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 |
|---|---|
|
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 |
|---|---|
|
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_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.

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 |
|---|---|
|
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. |
|
Opcional. Uma string para colocar entre os valores. Deve ser escrita como um argumento nomeado, como por exemplo |
|
Opcional. O número de casas decimais a apresentar ao imprimir números simples. Deve ser escrito como um argumento de palavra-chave, como |
# 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 |
|---|---|
|
A linha do cursor, de |
|
A coluna do cursor, de |
# 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 |
|---|---|
|
Opcional. A linha a limpar, de |
# 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:

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

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

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

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

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 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 |
|---|---|
|
Opcional. O tipo de controlador a criar: |
# Create the primary Controller
controller_1 = Controller(PRIMARY)
# Create a partner Controller
controller_2 = Controller(PARTNER)