Джойстик

Структура данных

ДанныеТипЗначение
Горизонтальное положение Xsigned char-100..100 положение движка по оси x
Вертикальное положение Ysigned char-100..100 положение движка по оси y

Джойстик является пропорциональным элементом управления и позволяет передать на микроконтроллер плавное изменение своих координат по двум осям: x и y. Джойстик управляется пальцем путем перемещения его движка в пределах зоны и позволяет плавно изменять значение от -100 до 100 (целые числа) по каждой из осей. Джойстик можно дополнительно оснастить кнопкой центрирования или управления джойстиком при помощи акселерометра (G-сенсора).Свойства джойстика позволяют задать следующие значения:

  • Имя переменной - имя джойстика и переменной в исходном коде для микроконтроллера, допускается задавать имя по правилам именования переменных языка C.
  • Центрировать - установка дополнительного элемента управления джойстиком, позволяющего перемещать движок джойстика в центр. Дополнительный элемент управления может быть установлен в одно из четырех мест по бокам джойстика. Установка данного элемента управления влияет на поведение джойстика. Если элемент управления центрированием не установлен, при отпускании пальца от джойстика, его движок автоматически установится по центру. Если элемент управления центрированием установлен, то при отпускании пальца от джойстика его движок останется в том же положении.
  • Включить G-сенсор - установка дополнительного элемента управления джойстиком, позволяющего управлять джойстиком путем наклона смартфона/планшета (при наличии соответствующего датчика). Дополнительный элемент управления может быть установлен в одно из четырех мест по бокам джойстика. При помощи данного элемента управление G-сенсором может быть как включено, так и отключено.

Примеры программирования

Пример управления двумя сервоприводами при помощи джойстика. Так как сервоприводы имеют разные характеристики, требуются калибровочные значения для каждого. Переменные SERVO_X_Center и SERVO_Y_Center определяют позицию центра сервоприводов. Значения центров должны быть предварительно определены в коде и могут принимать значения в диапазоне от 1000 до 2000 мс.


  int SERVO_X_Center = 1500;
  int SERVO_Y_Center = 1500;
  
  servo_x.writeMicroseconds(RemoteXY.joystick_1_x*10 + SERVO_X_Center);
  servo_y.writeMicroseconds(RemoteXY.joystick_1_y*10 + SERVO_Y_Center);