Knop#

Invoering#

De klasse button is een afgeleide klasse van de klasse controller. Deze biedt toegang tot de status van de controllerknoppen en de callbacks voor knopgebeurtenissen.

Een object button knoppen wordt benaderd via een object met controller . Het wordt niet direct geconstrueerd.

Een voor- en achterkant van de IQ 2e generatie controller met alle knoppen geel gemarkeerd. Op het oppervlak van de controller bevinden zich twee joystickknoppen in de linker- en rechterbovenhoek, met E omhoog en omlaag onder de linker joystick en F omhoog en omlaag onder de rechter. Aan de achterkant van de controller bevinden zich L omhoog en omlaag en R omhoog en omlaag aan respectievelijk de linker- en rechterkant.

Toegang#

De klasse controller biedt de volgende knopobjecten. Elk object is een instantie van de klasse button.

Voorwerp

Voorbeeldgebruik

Beschrijving

ButtonEDown

Controller.ButtonEDown.pressing()

De E ▼-knop.

ButtonEUp

Controller.ButtonEUp.pressing()

De E ▲-knop.

ButtonFDown

Controller.ButtonFDown.pressing()

De F ▼-knop.

ButtonFUp

Controller.ButtonFUp.pressing()

De F ▲-knop.

ButtonL3

Controller.ButtonL3.pressing()

De linker joystick-knop. Alleen voor IQ-controllers (2e generatie).

ButtonLDown

Controller.ButtonLDown.pressing()

De L ▼-knop.

ButtonLUp

Controller.ButtonLUp.pressing()

De L ▲-knop.

ButtonR3

Controller.ButtonR3.pressing()

De knop op de rechter joystick. Alleen voor IQ-controllers (2e generatie).

ButtonRDown

Controller.ButtonRDown.pressing()

De R ▼-knop.

ButtonRUp

Controller.ButtonRUp.pressing()

De R ▲-knop.

Notities#

  • Voordat je een button lidfunctie gebruikt, maak je een controller object aan.

  • De knoppen ButtonL3 en ButtonR3 zijn alleen beschikbaar op de IQ-controller (2e generatie).

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

Lidfuncties#

De klasse button bevat de volgende lidfuncties:

Getter — Lees de status van de knop.

  • pressing — Geeft aan of de knop wordt ingedrukt.

Callbacks — Voer functies uit wanneer er op knoppen wordt gedrukt.

  • pressed — Registreert een functie die moet worden uitgevoerd wanneer de knop wordt ingedrukt.

  • released — Registreert een functie die moet worden uitgevoerd wanneer de knop wordt losgelaten.

Getter#

pressing#

Door op pressing wordt gecontroleerd of de knop momenteel is ingedrukt.

Beschikbare functie

bool pressing() const;

Parameters

Deze functie heeft geen parameters.

Retourwaarde

Retourneert een Booleaanse waarde.

  • true — De knop wordt ingedrukt.

  • false — De knop wordt niet ingedrukt.

Voorbeeld

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

  wait(20, msec);
}

Terugbelverzoeken#

pressed#

pressed registreert een functie die wordt uitgevoerd wanneer de knop wordt ingedrukt.

Beschikbare functie

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

Parameter

Type

Beschrijving

callback

void (*)(void)

Een functie die wordt uitgevoerd wanneer de knop wordt ingedrukt.

Retourwaarde

Deze functie retourneert geen waarde.

Voorbeeld

Definieer de callbackfunctie buiten main.

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

Registreer de callback in main.

int main() {
  vexcodeInit();

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

released#

released registreert een functie die wordt uitgevoerd wanneer de knop wordt losgelaten.

Beschikbare functie

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

Parameter

Type

Beschrijving

callback

void (*)(void)

Een functie die wordt uitgevoerd wanneer de knop wordt losgelaten.

Retourwaarde

Deze functie retourneert geen waarde.

Voorbeeld

Definieer de callbackfunctie buiten main.

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

Registreer de callback in main.

int main() {
  vexcodeInit();

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