Botão#

Introdução#

A classe button é uma classe derivada da classe controller. Fornece acesso aos estados do botão do controlador e aos retornos de chamada de eventos do botão.

Um objeto do tipo botão button é acedido através de um objeto do tipo controlador controller . Não é construído diretamente.

Uma vista frontal e traseira do controlador IQ de 2ª geração com todos os botões destacados a amarelo. A superfície do comando contém dois botões de joystick nos cantos superiores esquerdo e direito, com as teclas E para cima e para baixo abaixo do joystick esquerdo e F para cima e para baixo abaixo do direito. Na parte traseira do comando, encontram-se as teclas L para cima e para baixo e R para cima e para baixo nos lados esquerdo e direito, respectivamente.

Acesso#

The controller class provides the following button objects. Each object is an instance of the button class.

Objeto

Exemplo de utilização

Descrição

ButtonEDown

Controller.ButtonEDown.pressing()

O botão E ▼.

ButtonEUp

Controller.ButtonEUp.pressing()

O botão E ▲.

ButtonFDown

Controller.ButtonFDown.pressing()

O botão F ▼.

ButtonFUp

Controller.ButtonFUp.pressing()

O botão F ▲.

ButtonL3

Controller.ButtonL3.pressing()

O botão Joystick Esquerdo. Apenas para o controlo IQ (2ª geração).

ButtonLDown

Controller.ButtonLDown.pressing()

O botão L ▼.

ButtonLUp

Controller.ButtonLUp.pressing()

O botão L ▲.

ButtonR3

Controller.ButtonR3.pressing()

Botão do joystick direito. Exclusivo para o controlo IQ (2ª geração).

ButtonRDown

Controller.ButtonRDown.pressing()

O botão R ▼.

ButtonRUp

Controller.ButtonRUp.pressing()

O botão R ▲.

Notas#

  • Antes de utilizar uma função membro do botão button , crie um objeto controlador controller.

  • Os botões ButtonL3 e ButtonR3 apenas estão disponíveis no controlador IQ (2ª geração).

// Create a controller object
controller Controller = controller();

Funções de membro#

A classe do botão button inclui as seguintes funções membro:

Getter — Lê o estado do botão.

  • pressing — Retorna se o botão está a ser premido.

Callbacks — Executam funções quando ocorrem eventos de botões.

  • pressed — Regista uma função a ser executada quando o botão é premido.

  • released — Regista uma função a ser executada quando o botão é libertado.

Getter#

pressing#

pressing returns whether the button is currently being pressed.

Função disponível

bool pressing() const;

Parâmetros

Esta função não tem parâmetros.

Valor de Retorno

Retorna um valor booleano.

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

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

Exemplo

// Turn right while R Up is pressed
while (true) {
  if (Controller.ButtonRUp.pressing()) {
    Drivetrain.turn(right);
  }
  else {
    Drivetrain.stop();
  }

  wait(20, msec);
}

Retornos de chamada#

pressed#

pressed regista uma função que é executada quando o botão é premido.

Função disponível

void pressed(void (* callback)(void)) const;

Parâmetro

Tipo

Descrição

callback

void (*)(void)

Uma função que é executada quando o botão é pressionado.

Valor de Retorno

Esta função não devolve qualquer valor.

Exemplo

Defina a função de retorno de chamada fora de main.

// Drive forward when F Up is pressed
void driveForward() {
  Drivetrain.driveFor(forward, 100, mm);
}

Registe o retorno de chamada dentro de main.

int main() {
  vexcodeInit();

  // Run driveForward when F Up is pressed
  Controller.ButtonFUp.pressed(driveForward);
}

released#

released regista uma função que é executada quando o botão é libertado.

Função disponível

void released(void (* callback)(void)) const;

Parâmetro

Tipo

Descrição

callback

void (*)(void)

Uma função que é executada quando o botão é libertado.

Valor de Retorno

Esta função não devolve qualquer valor.

Exemplo

Defina a função de retorno de chamada fora de main.

// Stop the drivetrain when F Up is released
void stopDriving() {
  Drivetrain.stop();
}

Registe o retorno de chamada dentro de main.

int main() {
  vexcodeInit();

  // Run stopDriving when F Up is released
  Controller.ButtonFUp.released(stopDriving);
}