Jump to content
VictorUs

Программирование джойстиков от VKB

Recommended Posts

15.08.2019 в 12:45, Alex_Oz сказал:

есть изменения по настройкам функций SHIFT, SubSHift, BS, BX ..

 

Функция BS ( кнопка управляемая SubSHIFT-ами)

Ранее - по умолчанию линована  к SubSHIFT #7

 

Теперь дополнительных управляемых вирт. линий - две, их можно привязывать к любым SubSHIFT

 

BS_1_.jpg.8288b6e24b4cbfdbf65feb77e471cf29.jpg   bs_2.jpg.e22de300ac76522d826adfd25fe06d74.jpg

 

Share this post


Link to post
Share on other sites

Всем привет!

Встала задача превратить стик SCG в 2 хатки. Нашел аналогичный вопрос в этой теме от 1 мая, но ни слова там не понял.

Сейчас у меня по умолчанию 8w pov и аналог, а необходимо две 4w pov.

Как это сделать?

 

Share this post


Link to post
Share on other sites

Вечерком гляну по реализации. Так навскидку нужен еще один uStick Switch на вторую хатку через джампер на вирт. линию основного uStick Switch (переключение кнопкой с фиксацией Button Alt). Это если не мудрить с TEMPO.

 

 

Share this post


Link to post
Share on other sites

Алекс за тобой хрен успеешь, во всем этом разобраться ))))

  • Upvote 1

Share this post


Link to post
Share on other sites
Posted (edited)

Да ладно, ничего же сложного :)


На закуску -  оно же через TEMPO.

image.png.b234f9e57f5017867bcb2f9447842b85.png

 

image.png.2c573ec26d442baf1e8a79dc28f6b08f.pngimage.png.4bc66dc9e1998ea41aa1bac3469e0033.pngimage.png.9a2a41ea674f34a2b31e6909f7d46fe8.pngimage.png.00ecb49c1357964c99ba8cae1f7c117c.png

 

Остальные настройки - по предыдущему примеру.

Короткая кнопка TEMPO (5) остаётся функциональной для сима, переключение хаток - по длинному нажатию.

( В предыдущем примере переключающая кнопка для сима потеряна )

Индикация текущего режима хаток красным светодиодом остаётся (как и в предыдущем примере).

 

PS/ В NG версии есть шанс через циклический свич размножить хатку на 3 или 4.Но это неточно.

 

 

BB_GF_SCG_2xPOV_TEMPO.zip

Edited by Alex_Oz
  • Like 1

Share this post


Link to post
Share on other sites
8 минут назад, Alex_Oz сказал:

Да ладно, ничего же сложного :)

Вспомнился старый анекдот:

-Товарищи курсанты,за какое время вы изучите японский язык?

-А учебник есть?

Да.

-Колян,вставай,пошли японский сдавать.

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)
1 час назад, Alex_Oz сказал:

PS/ В NG версии есть шанс через циклический свич размножить хатку на 3 или 4

 

image.png.cc5e3f5c5f6b79cd9b51b062a1b60bab.png  image.png.689245f3d6e15ebb0d101c165e753b31.png  image.png.30a8b8fad165dc4b73463df26c0ad108.pngimage.png.0b7919e25411238f27ece07d4553242f.pngimage.png.9c260daf515e50d044e0d6e485c648ce.png  GIF.gif.3a8a96eaa621c91bbd8b059502352688.gif

 

Как-то так.

Индикацию текущей хатки имеет смысл перекинуть на RGB.

 

 

Edited by Alex_Oz
  • Like 1

Share this post


Link to post
Share on other sites

У самой дороги
Чистый бежит ручей.
Тенистая ива.
Я думал, всего на миг,
И вот - стою долго-долго...

seven_samurai_movie_image_04.jpg

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)
21.08.2019 в 20:34, Alex_Oz сказал:

Да ладно, ничего же сложного :)


На закуску -  оно же через TEMPO.

image.png.b234f9e57f5017867bcb2f9447842b85.png

 

image.png.2c573ec26d442baf1e8a79dc28f6b08f.pngimage.png.4bc66dc9e1998ea41aa1bac3469e0033.pngimage.png.9a2a41ea674f34a2b31e6909f7d46fe8.pngimage.png.00ecb49c1357964c99ba8cae1f7c117c.png

 

Остальные настройки - по предыдущему примеру.

Короткая кнопка TEMPO (5) остаётся функциональной для сима, переключение хаток - по длинному нажатию.

( В предыдущем примере переключающая кнопка для сима потеряна )

Индикация текущего режима хаток красным светодиодом остаётся (как и в предыдущем примере).

 

PS/ В NG версии есть шанс через циклический свич размножить хатку на 3 или 4.Но это неточно.

 

 

BB_GF_SCG_2xPOV_TEMPO.zip 1 kB · 1 скачивание

Спасибо!

 

Edited by LokkiDay

Share this post


Link to post
Share on other sites

ручка MSG PRO

Есть желание настроить кнопки управления огнем так:

Откинут курок вверх на кн1 - допустим РС

Опущен курок вниз на кн1 - пушка например.Подскажите как реализовать?

Share this post


Link to post
Share on other sites

Здесь руководство пользователя. Раздел 3.7.2 Настройка откидного трггера MCG Pro. Расказано, как настроить кнопки. А уж их можно назначать на любые функции.

Успехов!

Share this post


Link to post
Share on other sites
Posted (edited)

Я так понял - задача не просто назначить что-либо на откидной триггер, а использовать его как модификатор.

 

Его можно найти в настройках

image.png.b433e0eed7d6e2f4f13407e92f577bb5.png - это 25 я виртуальная линия

 

В первом варианте решим задачу очевидным способом через модификатор SubShift

Для назначения этой функции необходимо прокинуть джампером 25 вирт. линию на физ.левел:

image.png.eeed6d59a7b688d3b270333aaf278ee0.png - SubSHIFT #1

 

Затем находим физ.линию триггера AP Disengage

image.png.6753ff5e569660c860f4b0c100085f2e.png

Вешаем на неё функцию BS

image.png.d50a66e1a229aa0731c9c3017006cfe1.png - вторая кнопка привязана к SS1

 

Результат:

GIF.gif.8960be96469b002b1a99d48f4baa67db.gif

 

 

Второй вариант - использовать булевские функции ( элементы 2И)

 

image.png.b0cf20051b73b5bd0662e2d4bacf31b6.png  image.png.54bb9b7e3e5cf74b62ea624e287ff4de.png

 

Нативную кнопку (V6 - L1) отрезать

image.png.95c1bd375ad7316e33e1aee4196d5879.png

 

Результат аналогичен.

 

Третий вариант самый простой - почти как первый, только через модификатор SHIFT ( #1) и обычную кнопку с шифтовой кнопкой

image.png.6b1eb2027c10f753bcc6bb8ea1aed628.png

Edited by Alex_Oz
  • Thanks 2
  • Upvote 1

Share this post


Link to post
Share on other sites

NG_v1_97_8_2 / VKBDevCfg-C_v0.90.60

 

Джамперу (NOT)  добавлена функциональность хаба  (множество параллельных выходов )

image.png.56d1792bc574926f0f8e3fb41349d8cf.png  image.png.7f8043bc1fc889912603652262168b64.png

 

При активации  Hub необходимо задать число реплицируемых выходов (2-8).

image.png.fe884ccd25ec2b24fa33fae0b57a7224.png

 

Применяется когда одну линию необходимо раздать на множество  функций - иначе пришлось бы создавать соответствующее количество джамперов.

Таки лень - двигатель прогресса ...

 

 

  • Like 4
  • Upvote 1

Share this post


Link to post
Share on other sites

Внимание !  v1_97_9_NG ( VKBDevCfg-C_v0.90.61 ) -  не совместимы по Basic параметрам с предыдущими версиями  NG !!!

 

Размер области Basic увеличен до 3 kB. Дополнительно - изменения в структурах ExtDev и LedEvent.

 

 

Edited by Alex_Oz

Share this post


Link to post
Share on other sites

Здравствуйте!

У меня старенькие педалечки (Т-Rudder MKI).

Подскажите, пож-ста, какую версию конфигуратора скачать для калибровки?

Ранее в течение  6 лет калибровал виндами, но после разборки (снимал кулачек для замены подшипника) откалиброваться не могу.

Спасибо заранее.

Share this post


Link to post
Share on other sites

Вопрос снят, получил полную консультацию по вариантам калибровки от Юрия ака Vumpel18.

Ему огромное спасибо!

  • Like 1

Share this post


Link to post
Share on other sites

Забудьте всё чему Вас учили в школе    все  предыдущие версии NG  более не актуальны.

Собственно весь сыр-бор из-за первых размышлений на тему  мультидевайса.

 

Итак, что новенького:

 

 Для MULTIDEVICE (отдельная прошивка)  добавлена возможность задать роль подключаемых устройств - Ordinal / Definer

 

image.png.74b26a41e7c3585186066e7eb5dd1231.png image.png.edeaddae045cf2adfbf063dd4d502272.png

 

image.png.264d8e468bf5150565c3be233208e5e9.png  image.png.2c1742f1bfc5303bae7c5806fc09dd3f.png

 

Ordinal - обычный тип устройства, который будет всегда ожидаться на шине.

Definer - это особое устройство, которое задаёт текущее устройство в целом

 

На данный момент дефайнерами могут быть только  MCG , SCG и Gladiator Stick.

Дефайнер определяет контроллер в целом - Gunfighter Modern Combat Pro NGSpace Gunfigher NG или Gunfighter Vintage NG

Контроллер при старте будет искать одно из устройств-дефайнеров, при нахождении первого доступного все остальные пометит как неиспользуемые в конфигурации и более обращаться к ним не будет:

image.png.c74824300769d33144a1f1e9d1dcd57b.png

 

Отличить MULTIDEVICE от обычного можно еще на вкладке Info

image.thumb.png.50e3209c45797dae14b0eb1833780b53.png

 

Финальное устройство идентично натуральному по HID одиночному соответствующему девайсу.

 

Но для  этого требуется  ряд необходимых действий.

 

1. Создание специальных профилей.

Основной профиль прошивки по дефолту - для MCG. С ним работаем как обычно - он входит в состав его грузить отдельно никуда не надо

Вот с остальными профилями  поступаем иначе - их надо грузить по номеру (CTRL+Set), указанному в параметре Profile

image.png.c1a0d38d3d6bcbad9b2a456a9e8abc46.png

Принцип создания такого профиля простой - сначала грузим прошивку отдельного нужного устройства, по необходимости подгружаем свой рабочий профиль и записываем в контроллер по нужному номеру. Затем снова прошиваем MULTIDEVICE (дефолтимся на всякий случай) и читаем из контроллера сохраненный ранее (CTRL+Get) . Теперь самое время сохранить его на диск (Save) как исходник.

 

Далее нам надо развести правильно физические оси с этих вторичных устройств

 

Здесь видно, что оси с ручки выводятся на 12,13 и 14 оси в Basic Physical Axes

image.png.264d8e468bf5150565c3be233208e5e9.png  image.png.686c42289babf497c1c89f1d9c3cd00f.png

 

Соответственно в профиле на логических осях мы их должны вернуть на положенное им место

 

image.png.f1dfc980d2c31cb9561e786d50fcf1c2.png

 

Для того, чтобы контроллер понимал, какие физические оси актуальны в текущей конфигурации - они должны быть помечены.

Параметр Multidevice определят это принадлежность. Если 0 - ось принадлежит всем конфигурациям.

image.png.ae3e9532338d5a83c0cbaf4f42bb29ec.png  image.png.686c42289babf497c1c89f1d9c3cd00f.png

 

#1 задает принадлежнсть к MCG, #2 - SCG, #3  -Gladiator Stick (KG12) (Это жестко заданные номера конфигураций, не путать со слотом профиля)

 

Файл профиля CSG для примера: GF SCG profile 2 for MULTIDEVICE.zip

 

Для KG12 профиль не делал - ничего сложного там быть не должно, потому как штатно осей нет,одни кнопки.

 

 

Edited by Alex_Oz
  • Like 4
  • Thanks 1

Share this post


Link to post
Share on other sites

А где прошивка? На скрине 980,а в архиве 97_9

Share this post


Link to post
Share on other sites

image.png.de8b1ee3f014f20ae4b3f4b52d39b023.png

 

При калибровке соответственно будут калиброваться общие оси и оси текущего девайса. Посему шевелить и калибровать общие оси лучше на финальной калибровке основной конфигурации.

Общая калибровка выглядит так:

 

1 Отключаем контроллер,  cтавим SCG , калибруем микростик (если установлен) и твист.

image.png.6ad49c5d8f9dc6b19ead852b237a9e42.png  image.png.77d6cf1441c3c6b91d9115df03349f65.png

 

2 Отключаем контроллер,  cтавим MCG , калибруем ручку и джойстик полностью.

 

image.png.ecc25960a80e6ef63a8a316d24532cae.png

 

Пока вроде всё.

Вообще это первые наброски, возможно ( и даже скорее всего ) будут изменения.

 

PS смена профилей ZLink-ом работать не будет (пока)

 

Edited by Alex_Oz

Share this post


Link to post
Share on other sites

Увидел.Спасибо.

Share this post


Link to post
Share on other sites

Еще по изменениям

 

Где ранее были задания осей (1..8) + контроллер(1..4) - стали просто оси 1..32

 

image.png.9f6bc7a2bf566fdd6bc296950c8856a3.png  image.png.7e79dab72c8f2af2e2a939057ec5071b.png

 

Share this post


Link to post
Share on other sites

VKBDevCfg-C_v0.90.70 / v1_98_1(3)_NG

 

Добавлена новая функция TEMPO - TmS ( SHIFT Switch):

image.png.e20c0b695ee84973d0bff4d59dafb9b0.png

Не имеет выходов на виртуальные кнопки.

Короткое нажатие включает/выключает SHIFT1, длинное - SHIFT2

SHIFT1 также переключается в момент действия SHIFT2  в теневом режиме - но остается не активным.

 

Ранее для этого требовалось строить специальные конструкции из булевских функций и обычной TEMPO :

image.jpeg.8ce9111bbefee089f5e6da043ee01dd7.jpeg

 

Не забываем про индикацию состояний шифтов:

image.png.219c127503fd790b154f5097138e391f.png

 

 

 

  • Like 2

Share this post


Link to post
Share on other sites

Black Mamba + MCG Pro  прошивка v1.97.9

Как настроить верхний микростик так, что бы он работал, как две оси? Настроил всё так же, как на нижнем - оси отображаются, но не работают.

Share this post


Link to post
Share on other sites
29 минут назад, Horus сказал:

Black Mamba + MCG Pro  прошивка v1.97.9

Как настроить верхний микростик так, что бы он работал, как две оси? Настроил всё так же, как на нижнем - оси отображаются, но не работают.

Отправил ЛС. 

  • Thanks 1

Share this post


Link to post
Share on other sites

Функция временного дискриминатора Tempo S получила дальнейшее развитие ( VKBDevCfg-C_v0.90.71 / v1_98_2_NG )

 

Для короткого(Short) и длинного(Long) нажатий добавлен выбор режима 

1162037471_TEMPOSMode.jpg.da38384a1ea806135b42d9b81b32fe13.jpg

 

VBut - стандартный режим импульсного нажатия вирт. кнопки (аналогично функции TEMPO 1)

1418494020_TEMPOS.jpg.4702fd2fa3767765eb21249e5af7359e.jpg

 

VButAlt - режим кнопки с фиксацией. Данный режим отображается инверсией цвета
1093294816_TEMPOSVButAlt.jpg.41fd9db296dc3ea7759daa6c483f6fa3.jpg

Этот режим удобно использовать в Advanced Mapping - для управления функциями виртуального уровня, которые не имеют фиксации.

Тем самым можно избежать использования счетного триггера RT из булевских.

Также для простого двухуровнего маппинга в качестве кнопки с фиксацией.

 

SHIFT - управление модификаторами SHIFT 1/2

1435602248_TEMPOSSHIFT12.jpg.e8c1906917b31d7e16074fcba71a062b.jpg

Теперь можно выбирать номер SHIFT для Short/Long

 

SubSHIFT - управление модификаторами SubSHIFT 1..7

212460712_TEMPOSSubSHIFT.jpg.3ee08910b6aa890ea8e2e66c5adf7928.jpg

 

Режимы могут сочетаться в любом порядке.

image.png.f30a11feb98b0cb3eeb16a71a2bd9d08.pngimage.png.5a0d1dc6ec6357a599f750285ef8d5e4.pngimage.png.93d5a59468256824ff6bd783a09f14c3.png

 

 

 

 

  • Like 3
  • Thanks 1

Share this post


Link to post
Share on other sites

Подключил MCG-PRO к Vint-Mamba.

VKBDevCfg-C v0.90.74 + ZBootloader-C v1.18 + _MambaVint_v1_97_A.vkb = в Test не видит MCG.. что я делаю неправильно?

 

Edited by CrankSer

Share this post


Link to post
Share on other sites

Нужно залить прошивку для MCG - _MambaFat_MCG_Pro_v1_97_A 

Share this post


Link to post
Share on other sites
28 минут назад, Vumpel18 сказал:

Нужно залить прошивку для MCG - _MambaFat_MCG_Pro_v1_97_A 

MambaVint_MCG_Pro_v1_97_A.vkb как то не нашел на сайте 🙄

image.png.f4028a4c2d5f29cc9f0d0ead41586b69.png

Edited by CrankSer

Share this post


Link to post
Share on other sites

Кто шарит в скетчах?

В одном на оси кнопки навешаны,а самих осей нет,в другом только оси.Как их объединить?

кнопки

Скрытый текст

#include <Joystick.h>

// Create the Joystick
Joystick_ Joystick;

// H-shifter mode analog axis thresholds
#define HS_XAXIS_12        400
#define HS_XAXIS_56        600
#define HS_YAXIS_135       800
#define HS_YAXIS_246       300

// Sequential shifter mode analog axis thresholds
#define SS_UPSHIFT_BEGIN   670
#define SS_UPSHIFT_END     600
#define SS_DOWNSHIFT_BEGIN 430
#define SS_DOWNSHIFT_END   500

// Handbrake mode analog axis limits
#define HB_MAXIMUM         530
#define HB_MINIMUM         400
#define HB_RANGE           (HB_MAXIMUM-HB_MINIMUM)

// Digital inputs definitions
#define DI_REVERSE         1
#define DI_MODE            3
#define DI_RED_CENTERRIGHT 4
#define DI_RED_CENTERLEFT  5
#define DI_RED_RIGHT       6
#define DI_RED_LEFT        7
#define DI_BLACK_TOP       8
#define DI_BLACK_RIGHT     9
#define DI_BLACK_LEFT      10
#define DI_BLACK_BOTTOM    11
#define DI_DPAD_RIGHT      12
#define DI_DPAD_LEFT       13
#define DI_DPAD_BOTTOM     14
#define DI_DPAD_TOP        15

// Shifter state
#define DOWN_SHIFT         -1
#define NO_SHIFT           0
#define UP_SHIFT           1

// Shifter mode
#define SHIFTER_MODE       0
#define HANDBRAKE_MODE     1

// LED blink counter
int led=0;

// Shifter state
int shift=NO_SHIFT;

// Handbrake mode
int mode=SHIFTER_MODE;

int b[16];

int gear=0;                          // Default value is neutral

// Constant that maps the phyical pin to the joystick button.
//const int pinToButtonMap = 9;

void setup() {
   // G29 shifter analog inputs configuration 
  pinMode(A0, INPUT_PULLUP);   // X axis
  pinMode(A2, INPUT_PULLUP);   // Y axis

  pinMode(2, INPUT); 


  for(int i=0; i<16; i++) b = 0;
  b[DI_MODE] =0;
  // Initialize Joystick Library
  Joystick.begin();
  
}

// Last state of the button
int lastButtonState = 0;

void loop() {

  int x=analogRead(0);                 // X axis
  int y=analogRead(2);                 // Y axis

  int _isreverse = digitalRead(2);
  int _gear_ = 0;

if( _isreverse == 1 ){

      _gear_ = 8;
      b[DI_REVERSE]= 1;

}else{ 
  

  if(b[DI_MODE]==0)                    // H-shifter mode?
  {
    if(x<HS_XAXIS_12)                  // Shifter on the left?
    {
      if(y>HS_YAXIS_135) _gear_=1;       // 1st gear
      if(y<HS_YAXIS_246) _gear_=2;       // 2nd gear
    }
    else if(x>HS_XAXIS_56)             // Shifter on the right?
    {
      if(y>HS_YAXIS_135) _gear_=5;       // 5th gear
      if(y<HS_YAXIS_246) _gear_=6;       // 6th gear
     
    }
    else                               // Shifter is in the middle
    {
      if(y>HS_YAXIS_135) _gear_=3;       // 3rd gear
      if(y<HS_YAXIS_246) _gear_=4;       // 4th gear
    }
   
  }

}
  
  
  if(gear!=6) b[DI_REVERSE]=0;         // Reverse gear is allowed only on 6th gear position
  
   if (_gear_ != gear ){
      gear = _gear_;
      desactivar();
      Joystick.setButton(gear-1, HIGH);
   }
   delay(50);
}

void desactivar(){
  // Depress virtual button for current gear
  for(int i = 0; i <= 10 ; i++ )  Joystick.setButton(i, LOW);
}

оси

Скрытый текст

#include <Joystick.h>

Joystick_ Joystick;

int zAxis_ = 0;                     
int RyAxis_ = 0;                   

const bool initAutoSendState = true; 

void setup()
{
      Joystick.begin();
  }
   
void loop(){
 
zAxis_ = analogRead(A0);  
zAxis_ = map(zAxis_,0,1023,0,255);
 Joystick.setZAxis(zAxis_);  
  
 
 RyAxis_ = analogRead(A2);
 RyAxis_ = map(RyAxis_,0,1023,0,255);
 Joystick.setRyAxis(RyAxis_);
       
  
            
 
delay (50);
}

//AMSTUDIO Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Joystick.h

Скрытый текст

#ifndef JOYSTICK_h
#define JOYSTICK_h

#include <DynamicHID/DynamicHID.h>

#if ARDUINO < 10606
#error The Joystick library requires Arduino IDE 1.6.6 or greater. Please update your IDE.
#endif // ARDUINO < 10606

#if ARDUINO > 10606
#if !defined(USBCON)
#error The Joystick library can only be used with a USB MCU (e.g. Arduino Leonardo, Arduino Micro, etc.).
#endif // !defined(USBCON)
#endif // ARDUINO > 10606

#if !defined(_USING_DYNAMIC_HID)

#warning "Using legacy HID core (non pluggable)"

#else // !defined(_USING_DYNAMIC_HID)

//================================================================================
//  Joystick (Gamepad)

#define JOYSTICK_DEFAULT_REPORT_ID         0x03
#define JOYSTICK_DEFAULT_BUTTON_COUNT        32
#define JOYSTICK_DEFAULT_AXIS_MINIMUM         0
#define JOYSTICK_DEFAULT_AXIS_MAXIMUM      1023
#define JOYSTICK_DEFAULT_SIMULATOR_MINIMUM    0
#define JOYSTICK_DEFAULT_SIMULATOR_MAXIMUM 1023
#define JOYSTICK_DEFAULT_HATSWITCH_COUNT      2
#define JOYSTICK_HATSWITCH_COUNT_MAXIMUM      2
#define JOYSTICK_HATSWITCH_RELEASE           -1
#define JOYSTICK_TYPE_JOYSTICK             0x04
#define JOYSTICK_TYPE_GAMEPAD              0x05
#define JOYSTICK_TYPE_MULTI_AXIS           0x08

class Joystick_
{
private:

    // Joystick State
    int16_t                     _xAxis;
    int16_t                     _yAxis;
    int16_t                     _zAxis;
    int16_t                     _xAxisRotation;
    int16_t                     _yAxisRotation;
    int16_t                     _zAxisRotation;
    int16_t                  _throttle;
    int16_t                  _rudder;
    int16_t                     _accelerator;
    int16_t                     _brake;
    int16_t                     _steering;
    int16_t                     _hatSwitchValues[JOYSTICK_HATSWITCH_COUNT_MAXIMUM];
    uint8_t                 *_buttonValues = NULL;

    // Joystick Settings
    bool                     _autoSendState;
    uint8_t                  _buttonCount;
    uint8_t                  _buttonValuesArraySize = 0;
    uint8_t                     _hatSwitchCount;
    uint8_t                     _includeAxisFlags;
    uint8_t                     _includeSimulatorFlags;
    int16_t                  _xAxisMinimum = JOYSTICK_DEFAULT_AXIS_MINIMUM;
    int16_t                  _xAxisMaximum = JOYSTICK_DEFAULT_AXIS_MAXIMUM;
    int16_t                  _yAxisMinimum = JOYSTICK_DEFAULT_AXIS_MINIMUM;
    int16_t                  _yAxisMaximum = JOYSTICK_DEFAULT_AXIS_MAXIMUM;
    int16_t                  _zAxisMinimum = JOYSTICK_DEFAULT_AXIS_MINIMUM;
    int16_t                  _zAxisMaximum = JOYSTICK_DEFAULT_AXIS_MAXIMUM;
    int16_t                  _rxAxisMinimum = JOYSTICK_DEFAULT_AXIS_MINIMUM;
    int16_t                  _rxAxisMaximum = JOYSTICK_DEFAULT_AXIS_MAXIMUM;
    int16_t                  _ryAxisMinimum = JOYSTICK_DEFAULT_AXIS_MINIMUM;
    int16_t                  _ryAxisMaximum = JOYSTICK_DEFAULT_AXIS_MAXIMUM;
    int16_t                  _rzAxisMinimum = JOYSTICK_DEFAULT_AXIS_MINIMUM;
    int16_t                  _rzAxisMaximum = JOYSTICK_DEFAULT_AXIS_MAXIMUM;
    int16_t                  _rudderMinimum = JOYSTICK_DEFAULT_SIMULATOR_MINIMUM;
    int16_t                  _rudderMaximum = JOYSTICK_DEFAULT_SIMULATOR_MAXIMUM;
    int16_t                  _throttleMinimum = JOYSTICK_DEFAULT_SIMULATOR_MINIMUM;
    int16_t                  _throttleMaximum = JOYSTICK_DEFAULT_SIMULATOR_MAXIMUM;
    int16_t                  _acceleratorMinimum = JOYSTICK_DEFAULT_SIMULATOR_MINIMUM;
    int16_t                  _acceleratorMaximum = JOYSTICK_DEFAULT_SIMULATOR_MAXIMUM;
    int16_t                  _brakeMinimum = JOYSTICK_DEFAULT_SIMULATOR_MINIMUM;
    int16_t                  _brakeMaximum = JOYSTICK_DEFAULT_SIMULATOR_MAXIMUM;
    int16_t                  _steeringMinimum = JOYSTICK_DEFAULT_SIMULATOR_MINIMUM;
    int16_t                  _steeringMaximum = JOYSTICK_DEFAULT_SIMULATOR_MAXIMUM;

    uint8_t                  _hidReportId;
    uint8_t                  _hidReportSize; 

protected:
    int buildAndSet16BitValue(bool includeValue, int16_t value, int16_t valueMinimum, int16_t valueMaximum, int16_t actualMinimum, int16_t actualMaximum, uint8_t dataLocation[]);
    int buildAndSetAxisValue(bool includeAxis, int16_t axisValue, int16_t axisMinimum, int16_t axisMaximum, uint8_t dataLocation[]);
    int buildAndSetSimulationValue(bool includeValue, int16_t value, int16_t valueMinimum, int16_t valueMaximum, uint8_t dataLocation[]);

public:
    Joystick_(
        uint8_t hidReportId = JOYSTICK_DEFAULT_REPORT_ID,
        uint8_t joystickType = JOYSTICK_TYPE_JOYSTICK,
        uint8_t buttonCount = JOYSTICK_DEFAULT_BUTTON_COUNT,
        uint8_t hatSwitchCount = JOYSTICK_DEFAULT_HATSWITCH_COUNT,
        bool includeXAxis = true,
        bool includeYAxis = true,
        bool includeZAxis = true,
        bool includeRxAxis = true,
        bool includeRyAxis = true,
        bool includeRzAxis = true,
        bool includeRudder = true,
        bool includeThrottle = true,
        bool includeAccelerator = true,
        bool includeBrake = true,
        bool includeSteering = true);

    void begin(bool initAutoSendState = true);
    void end();
    
    // Set Range Functions
    inline void setXAxisRange(int16_t minimum, int16_t maximum)
    {
        _xAxisMinimum = minimum;
        _xAxisMaximum = maximum;
    }
    inline void setYAxisRange(int16_t minimum, int16_t maximum)
    {
        _yAxisMinimum = minimum;
        _yAxisMaximum = maximum;
    }
    inline void setZAxisRange(int16_t minimum, int16_t maximum)
    {
        _zAxisMinimum = minimum;
        _zAxisMaximum = maximum;
    }
    inline void setRxAxisRange(int16_t minimum, int16_t maximum)
    {
        _rxAxisMinimum = minimum;
        _rxAxisMaximum = maximum;
    }
    inline void setRyAxisRange(int16_t minimum, int16_t maximum)
    {
        _ryAxisMinimum = minimum;
        _ryAxisMaximum = maximum;
    }
    inline void setRzAxisRange(int16_t minimum, int16_t maximum)
    {
        _rzAxisMinimum = minimum;
        _rzAxisMaximum = maximum;
    }
    inline void setRudderRange(int16_t minimum, int16_t maximum)
    {
        _rudderMinimum = minimum;
        _rudderMaximum = maximum;
    }
    inline void setThrottleRange(int16_t minimum, int16_t maximum)
    {
        _throttleMinimum = minimum;
        _throttleMaximum = maximum;
    }
    inline void setAcceleratorRange(int16_t minimum, int16_t maximum)
    {
        _acceleratorMinimum = minimum;
        _acceleratorMaximum = maximum;
    }
    inline void setBrakeRange(int16_t minimum, int16_t maximum)
    {
        _brakeMinimum = minimum;
        _brakeMaximum = maximum;
    }
    inline void setSteeringRange(int16_t minimum, int16_t maximum)
    {
        _steeringMinimum = minimum;
        _steeringMaximum = maximum;
    }

    // Set Axis Values
    void setXAxis(int16_t value);
    void setYAxis(int16_t value);
    void setZAxis(int16_t value);
    void setRxAxis(int16_t value);
    void setRyAxis(int16_t value);
    void setRzAxis(int16_t value);

    // Set Simuation Values
    void setRudder(int16_t value);
    void setThrottle(int16_t value);
    void setAccelerator(int16_t value);
    void setBrake(int16_t value);
    void setSteering(int16_t value);

    void setButton(uint8_t button, uint8_t value);
    void pressButton(uint8_t button);
    void releaseButton(uint8_t button);

    void setHatSwitch(int8_t hatSwitch, int16_t value);

    void sendState();
};

#endif // !defined(_USING_DYNAMIC_HID)
#endif // JOYSTICK_h
 

 

Share this post


Link to post
Share on other sites
45 минут назад, CrankSer сказал:

MambaVint_MCG_Pro_v1_97_A.vkb как то не нашел на сайте 🙄

 

Есть такое дело, точней нет)


 

Скрытый текст

 

В будущем добавлю в пакет, сейчас здесь 🙂 ( для MCG PRO)

_MambaVint_v1_97_A.zip

 

 

 

 

Edited by Alex_Oz
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
11 минут назад, Alex_Oz сказал:

Есть такое дело, точней нет)

Приятно быть обладателем эксклюзивного товара 😀

Share this post


Link to post
Share on other sites

VKBDevCfg-C_v0.90.77 / v1_98_4 NG

 

image.png.9e9d03b434c0193254ca6a7d5a623a10.png

Настройка Anti-DZ находится в логических осях, там же и считается. Задаётся в пределах ±12,5%.

Может пригодиться для компенсации мёртвых зон,  вшитых в игру.

 

image.png.ebf0469dceb23267a23a39563ad19ed6.png

 

GIF.gif.8b2730da6f164dc5d785ef9cdb954ef7.gif

 

Параметр FA3 Value переехал в виртуальные оси - проверьте настройки если он использовался ранее ( был в логических осях).

 

 

 

Edited by Alex_Oz
  • Like 2
  • Thanks 3

Share this post


Link to post
Share on other sites

Использую жирную мамбу с MCG. Прошивка 1.97 С. Настроил триммирование осей на энкодеры, но не получается поменять направление триммирования. При изменении значения поля Trimmer c Trimm + на Trimm - направление не меняется. Сижу и думаю - гранаты не той системы или я кидать не умею?)) Закинул сюда профиль на всякий случай https://yadi.sk/d/RN67Bjhxp54oPw

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...