Контролер#

Вступ#

Клас controller представляє контролер VEX EXP, підключений до EXP Brain. Об’єкт controller може використовуватися для доступу до значень осі джойстика, зчитування станів кнопок, реєстрації зворотних викликів кнопок або джойстика, створення гудіння контролера та перевірки підключення контролера.

VEX EXP сумісний з контролером V5. Див. V5 Controller API для отримання додаткової інформації.

Коли у вікні «Пристрої» налаштовано один або декілька контролерів, VEXcode EXP також надає значення RemoteControlCodeEnabledЦя глобальна змінна вмикає або вимикає дії контролера, налаштовані в меню «Пристрої».

Похідні класи#

Клас controller надає такі похідні класи:

  • Axis – Надає доступ до вхідних значень осі джойстика та подій зміни.

  • Button – Надає доступ до зворотних викликів стану кнопки та подій кнопки.

Конструктори#

1 - Створює контролер, використовуючи тип основного контролера. Зазвичай використовується, коли підключено один контролер.

controller();

2 - Створює контролер для вказаного типу контролера. Використовується, коли підключено два контролери.

controller(
    controllerType id );

Доступні функції

controller();

controller(controllerType id);

Параметр

Тип

Опис

id

controllerType

Необов’язково. Тип контролера для створення: primary для основного контролера, підключеного до Brain, або partner для другого контролера, підключеного до Brain.

Примітки

В одному проєкті можна створити лише один primary контролер та один partner контролер.

Приклад

// Create the primary controller
controller Controller1 = controller();

// Create a partner controller
controller Controller2 = controller(partner);

Деструктор#

~контролер#

~controller знищує об’єкт контролера controller ресурси.

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

~controller();

Параметри#

Параметр

Тип

Опис

id

controllerType

Тип створюваного контролера:

  • primary – Первинний контролер, підключений до мозку.
  • partner – Партнерський (другий) контролер, підключений до мозку.

Нотатки#

  • В одному проєкті може існувати лише один primary та один partner контролер.

Приклад#

// Create an EXP controller instance
controller Controller = controller();

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

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

  • rumble – Гуркіт контролера за допомогою шаблону.

  • installed - Перевіряє, чи контролер підключений до мозку.

гуркіт#

rumble змушує контролер вібрувати за певним вібраційним шаблоном. У рядку шаблону крапки – це короткі вібрації, тире – довгі вібрації, а пробіли – паузи.

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

void rumble(const char *str);

Параметр

Тип

Опис

str

const char *

Рядок, що складається з крапок, тире та пробілів, що представляють візерунок гриму.

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

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

Приклад

// Rumble with a short-short-long pattern
Controller1.rumble("..-");

Геттер#

встановлено#

installed повертає, чи підключено контролер до Brain.

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

bool installed();

Параметри

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

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

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

  • true - The controller is installed/connected.
  • false - The controller is not installed/connected.

Глобальні змінні#

Код віддаленого керування увімкнено#

RemoteControlCodeEnabled вмикає або вимикає дії контролера, налаштовані в меню «Пристрої». Дії, налаштовані контролером, увімкнено за замовчуванням.

Usage:
RemoteControlCodeEnabled = state;

Значення

Опис

true

Вмикає дії, налаштовані контролером.

false

Вимикає дії, налаштовані контролером.

Values
  • true - Controller-configured actions are enabled.
  • false - Controller-configured actions are disabled.
Notes
  • Дії, налаштовані контролером, увімкнено за замовчуванням.

  • Ця змінна працюватиме лише при використанні VEXcode.

Examples
// Drive forward or backward using the left joystick
RemoteControlCodeEnabled = false;

while (true) {
  if (Controller1.Axis3.position() > 0) {
    Drivetrain.drive(forward);
  }
  else if (Controller1.Axis3.position() < 0) {
    Drivetrain.drive(reverse);
  }
  // Press A to use controller configured actions again
  else if (Controller1.ButtonA.pressing()) {
    break;
  }
  else {
    Drivetrain.stop();
  }

  wait(20, msec);
}

RemoteControlCodeEnabled = true;