Кнопка#

Вступ#

Клас button є похідним класом від класу controller. Він надає доступ до станів кнопок контролера та зворотних викликів подій кнопок.

Доступ до об’єкта button здійснюється через об’єкт controller Він не створюється безпосередньо.

Вигляд спереду та ззаду контролера IQ 2-го покоління, всі кнопки якого виділені жовтим кольором. Поверхня контролера містить дві кнопки джойстика у верхньому лівому та правому кутах: E вгору та вниз під лівим джойстиком, а F вгору та вниз під правим. На задній панелі контролера розташовані L вгору та вниз і R вгору та вниз з лівого та правого боків відповідно.

Доступ#

Клас контролера controller надає такі об’єкти кнопок. Кожен об’єкт є екземпляром класу button.

Об’єкт

Приклад використання

Опис

ButtonEDown

Controller.ButtonEDown.pressing()

Кнопка E ▼.

ButtonEUp

Controller.ButtonEUp.pressing()

Кнопка E ▲.

ButtonFDown

Controller.ButtonFDown.pressing()

Кнопка F ▼.

ButtonFUp

Controller.ButtonFUp.pressing()

Кнопка F ▲.

ButtonL3

Controller.ButtonL3.pressing()

Кнопка Ліва джойстик. Тільки для контролера IQ (2-го покоління).

ButtonLDown

Controller.ButtonLDown.pressing()

Кнопка L ▼.

ButtonLUp

Controller.ButtonLUp.pressing()

Кнопка L ▲.

ButtonR3

Controller.ButtonR3.pressing()

Кнопка Правого джойстика. Тільки для контролера IQ (2-го покоління).

ButtonRDown

Controller.ButtonRDown.pressing()

Кнопка R ▼.

ButtonRUp

Controller.ButtonRUp.pressing()

Кнопка R ▲.

Нотатки#

  • Перш ніж використовувати функцію-член button , створіть об’єкт controller.

  • ButtonL3 та ButtonR3 доступні лише на контролері IQ (2-го покоління).

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

Функції-члени#

Клас button містить такі функції-члени:

Геттер — Зчитування стану кнопки.

  • pressing — Повертає, чи натискається кнопка.

Зворотні виклики — Запускають функції, коли відбуваються події кнопок.

  • pressed — Реєструє функцію, яка запускається при натисканні кнопки.

  • released — Реєструє функцію, яка запускається після відпускання кнопки.

Геттер#

pressing#

pressing повертає інформацію про те, чи натиснута кнопка в даний момент.

Доступна функція

bool pressing() const;

Параметри

Ця функція не має параметрів.

Повернене значення

Повертає логічне значення.

  • true — Кнопка натискається.

  • false — Кнопка не натискається.

Приклад

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

  wait(20, msec);
}

Зворотні виклики#

pressed#

pressed реєструє функцію, яка виконується при натисканні кнопки.

Доступна функція

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

Параметр

Тип

Опис

callback

void (*)(void)

Функція, яка виконується при натисканні кнопки.

Повернене значення

Ця функція не повертає значення.

Приклад

Визначте функцію зворотного виклику поза межами main.

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

Зареєструйте зворотний виклик всередині main.

int main() {
  vexcodeInit();

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

released#

released реєструє функцію, яка виконується після відпускання кнопки.

Доступна функція

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

Параметр

Тип

Опис

callback

void (*)(void)

Функція, яка виконується після відпускання кнопки.

Повернене значення

Ця функція не повертає значення.

Приклад

Визначте функцію зворотного виклику поза межами main.

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

Зареєструйте зворотний виклик всередині main.

int main() {
  vexcodeInit();

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