Перейти к публикации

Рекомендованные сообщения

Опубликовано:
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

 

Опубликовано:

Всем привет!

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

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

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

 

Опубликовано:

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

 

 

Опубликовано:

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

  • Поддерживаю! 1
Опубликовано: (изменено)

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


На закуску -  оно же через 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

Изменено пользователем Alex_Oz
  • Нравится 1
Опубликовано:
8 минут назад, Alex_Oz сказал:

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

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

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

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

Да.

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

  • Нравится 1
Опубликовано:
Опубликовано: (изменено)
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.

 

 

Изменено пользователем Alex_Oz
  • Нравится 1
Опубликовано:

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

seven_samurai_movie_image_04.jpg

  • Нравится 1
Опубликовано: (изменено)
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 скачивание

Спасибо!

 

Изменено пользователем LokkiDay
Опубликовано:

ручка MSG PRO

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

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

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

Опубликовано:

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

Успехов!

Опубликовано: (изменено)

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

 

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

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

Изменено пользователем Alex_Oz
  • Спасибо! 2
  • Поддерживаю! 1
Опубликовано:

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

 

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

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

 

 

  • Нравится 4
  • Поддерживаю! 1
Опубликовано: (изменено)

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

 

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

 

 

Изменено пользователем Alex_Oz
Опубликовано:

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

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

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

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

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

Опубликовано:

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

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

  • Нравится 1
Опубликовано: (изменено)

Забудьте всё чему Вас учили в школе    все  предыдущие версии 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 профиль не делал - ничего сложного там быть не должно, потому как штатно осей нет,одни кнопки.

 

 

Изменено пользователем Alex_Oz
  • Нравится 6
  • Спасибо! 1
Опубликовано:

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

Опубликовано: (изменено)

image.png.de8b1ee3f014f20ae4b3f4b52d39b023.png

 

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

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

 

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

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

 

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

 

image.png.ecc25960a80e6ef63a8a316d24532cae.png

 

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

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

 

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

 

Изменено пользователем Alex_Oz
Опубликовано:

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

 

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

 

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

 

Опубликовано:

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

 

 

 

  • Нравится 2
Опубликовано:

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

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

Опубликовано:
29 минут назад, Horus сказал:

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

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

Отправил ЛС. 

  • Нравится 1
  • Спасибо! 1
Опубликовано:

Функция временного дискриминатора 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

 

 

 

 

  • Нравится 3
  • Спасибо! 1
  • 2 недели спустя...
Опубликовано: (изменено)

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

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

 

Изменено пользователем CrankSer
Опубликовано:

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

Опубликовано: (изменено)
28 минут назад, Vumpel18 сказал:

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

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

image.png.f4028a4c2d5f29cc9f0d0ead41586b69.png

Изменено пользователем CrankSer
Опубликовано:

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

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

кнопки

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

#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
 

 

Опубликовано: (изменено)
45 минут назад, CrankSer сказал:

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

 

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


 

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

 

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

_MambaVint_v1_97_A.zip

 

 

 

 

Изменено пользователем Alex_Oz
  • Нравится 1
  • Спасибо! 1
Опубликовано:
11 минут назад, Alex_Oz сказал:

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

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

  • 2 недели спустя...
Опубликовано: (изменено)

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 переехал в виртуальные оси - проверьте настройки если он использовался ранее ( был в логических осях).

 

 

 

Изменено пользователем Alex_Oz
  • Нравится 2
  • Спасибо! 3
  • 2 недели спустя...
Опубликовано:

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

Опубликовано:
19 часов назад, night_fighter сказал:

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

на всякий случай попробуй на другой версии прошивки. 

Опубликовано:

Новый, черный Blackbox, смотрю, появился на Али.

А что там в нём нового?

Опубликовано:
21.10.2019 в 18:28, night_fighter сказал:

 При изменении значения поля Trimmer c Trimm + на Trimm - направление не меняется.

Таки да(( Вчера проверил. Положение спасает инвертирование виртуальной оси в логических. R или In. Будем ждать помощи от создателя.

  • Спасибо! 1
Опубликовано:
21.10.2019 в 21:28, night_fighter сказал:

Использую жирную мамбу с MCG. Прошивка 1.97 С. Настроил триммирование осей на энкодеры, но не получается поменять направление триммирования. При изменении значения поля Trimmer c Trimm + на Trimm - направление не меняется

 

Поправил (v1.97.D)

 

  • Спасибо! 2

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...