Кнопка#

Вступ#

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

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

Передня та верхня сторони контролера EXP з джойстиками, кнопками зі стрілками та кнопками дій, виділеними жовтим кольором. На поверхні контролера розташовані два джойстики ліворуч та праворуч, з кнопками зі стрілками вгору та вниз ліворуч та кнопками A та B праворуч. У верхній частині контролера розташовані L1 та L2 ліворуч та R1 та R2 праворуч.

Доступ#

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

Об’єкт

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

Опис

ButtonA

Controller.ButtonA.pressing()

Кнопка А.

ButtonB

Controller.ButtonB.pressing()

Кнопка B.

ButtonDown

Controller.ButtonDown.pressing()

Кнопка Вниз.

ButtonUp

Controller.ButtonUp.pressing()

Кнопка Вгору.

ButtonL1

Controller.ButtonL1.pressing()

Кнопка L1.

ButtonL2

Controller.ButtonL2.pressing()

Кнопка L2.

ButtonL3

Controller.ButtonL3.pressing()

Кнопка L3.

ButtonR1

Controller.ButtonR1.pressing()

Кнопка R1.

ButtonR2

Controller.ButtonR2.pressing()

Кнопка R2.

ButtonR3

Controller.ButtonR3.pressing()

Кнопка R3.

Нотатки#

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

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

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

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

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

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

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

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

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

Геттер#

pressing#

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

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

bool pressing() const;

Параметри

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

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

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

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

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

Приклад

// Turn right while L1 is pressed
while (true) {
  if (Controller.ButtonL1.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 R1 is pressed
void driveForward() {
  Drivetrain.driveFor(forward, 200, mm);
}

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

int main() {
  vexcodeInit();

  // Run driveForward when R1 is pressed
  Controller.ButtonR1.pressed(driveForward);
}

released#

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

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

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

Параметр

Тип

Опис

callback

void (*)(void)

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

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

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

Приклад

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

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

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

int main() {
  vexcodeInit();

  // Run stopDriving when R1 is released
  Controller.ButtonR1.released(stopDriving);
}