Кнопка#
Вступ#
Клас button є похідним класом від класу controller. Він надає доступ до станів кнопок контролера та зворотних викликів подій кнопок.
Доступ до об’єкта button здійснюється через об’єкт controller Він не створюється безпосередньо.
Контролер IQ (1-го покоління) має вісім основних кнопок. Якщо до IQ Brain (1-го покоління) підключено контролер IQ (2-го покоління), також можна використовувати кнопки джойстика ButtonL3 та ButtonR3.

Доступ#
Клас контролера controller надає такі об’єкти кнопок. Кожен об’єкт є екземпляром класу button.
Об’єкт |
Приклад використання |
Опис |
|---|---|---|
|
|
Кнопка E ▼. |
|
|
Кнопка E ▲. |
|
|
Кнопка F ▼. |
|
|
Кнопка F ▲. |
|
|
Кнопка L ▼. |
|
|
Кнопка L ▲. |
|
|
Кнопка R ▼. |
|
|
Кнопка R ▲. |
|
|
Кнопка Ліва джойстик. Тільки для контролера IQ (2-го покоління). |
|
|
Кнопка Правого джойстика. Тільки для контролера IQ (2-го покоління). |
Нотатки#
Перш ніж використовувати функцію-член
button, створіть об’єктcontroller.ButtonL3таButtonR3доступні лише за умови підключення контролера IQ (2-го покоління).
// Create a controller object
controller Controller = controller();
Функції-члени#
Клас button містить такі функції-члени:
Геттер — Зчитування стану кнопки.
pressing— Повертає, чи натискається кнопка.
Зворотні виклики — Запускають функції, коли відбуваються події кнопок.
Геттер#
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;
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Функція, яка виконується при натисканні кнопки. |
Повернене значення
Ця функція не повертає значення.
Приклад
Визначте функцію зворотного виклику поза межами 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;
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Функція, яка виконується після відпускання кнопки. |
Повернене значення
Ця функція не повертає значення.
Приклад
Визначте функцію зворотного виклику поза межами 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);
}