DCS Bios avec DCSFlightpanels
Publié : lun. avr. 11, 2022 12:31 pm
Salut
Pour faire suite à mon message viewtopic.php?f=286&t=215128 et à tous les tests que j'ai fait, je suis tombé sur le projet suivant sur Github https://github.com/DCSFlightpanels/dcs-bios
Après avoir suivi toute la procédure d'installation de ce DCS BIOS j'ai résolu tous mes problèmes avec mon pit et toutes mes commandes fonctionnent. Je tenais à vous partager mon retour car j'ai compris que certain avait les mêmes soucis.
Si vous rencontrez des difficultés pour l'installation je peux aider sur Discord.
Vous verez aussi l'astuce pour les switch guard qu'on peut mettre sur un seul PIN de l'Arduino
Je vous mets la copie de mon code :
Tell DCS-BIOS to use a serial connection and use interrupt-driven
communication. The main program will be interrupted to prioritize
processing incoming data.
This should work on any Arduino that has an ATMega328 controller
(Uno, Pro Mini, many others).
*/
#define DCSBIOS_IRQ_SERIAL
#include "DcsBios.h"
typedef DcsBios::RotaryEncoderT<POLL_EVERY_TIME, DcsBios::FOUR_STEPS_PER_DETENT> FourStepRotaryEncoder; // A custom rotary encoder with four quadrature steps per physical detent.
/* MASTER ARM */
DcsBios::LED masterModeAaLt(0x740c, 0x0200, 53);
DcsBios::LED masterModeAgLt(0x740c, 0x0400, 52);
DcsBios::Switch2Pos masterArmSw("MASTER_ARM_SW", 51, true);
DcsBios::Switch2Pos masterModeAa("MASTER_MODE_AA", 48);
DcsBios::Switch2Pos masterModeAg("MASTER_MODE_AG", 49);
/* EMERGENCY JETTISON */
DcsBios::Switch2Pos emerJettBtn("EMER_JETT_BTN", 50, true);
/* MAP GAIN/SPIN RECOVERY PANEL */
DcsBios::PotentiometerEWMA<5, 128, 5> hmdOffBrt("HMD_OFF_BRT", A7);
DcsBios::Switch3Pos irCoolSw("IR_COOL_SW", 25, 23);
DcsBios::LED spinLt(0x742a, 0x0800, 47);
DcsBios::SwitchWithCover2Pos spinRecovery("SPIN_RECOVERY_SW", "SPIN_RECOVERY_COVER", 24);
/* STBY INSTRUMENTS */
FourStepRotaryEncoder stbyPressAlt("STBY_PRESS_ALT", "-3200", "+3200", 26, 27);
FourStepRotaryEncoder saiSet("SAI_SET", "-3200", "+3200", 28, 29);
DcsBios::Switch2Pos saiCage("SAI_CAGE", 30);
/* UFC EFD */
FourStepRotaryEncoder ufcComm1ChannelSelect("UFC_COMM1_CHANNEL_SELECT", "DEC", "INC", 31, 22);
FourStepRotaryEncoder ufcComm2ChannelSelect("UFC_COMM2_CHANNEL_SELECT", "DEC", "INC", 36, 34);
DcsBios::PotentiometerEWMA<5, 128, 5> ufcBrt("UFC_BRT", A4);
DcsBios::Switch2Pos ufcComm1Pull("UFC_COMM1_PULL", 32);
DcsBios::PotentiometerEWMA<5, 128, 5> ufcComm1Vol("UFC_COMM1_VOL", A6);
DcsBios::Switch2Pos ufcComm2Pull("UFC_COMM2_PULL", 33);
DcsBios::PotentiometerEWMA<5, 128, 5> ufcComm2Vol("UFC_COMM2_VOL", A5);
/* HUD PANEL */
DcsBios::PotentiometerEWMA<5, 128, 5> hudAoaIndexer("HUD_AOA_INDEXER", A2);
DcsBios::PotentiometerEWMA<5, 128, 5> hudSymBrt("HUD_SYM_BRT", A3);
/* IFEI EFD */
DcsBios::Switch2Pos ifeiModeBtn("IFEI_MODE_BTN", 43);
DcsBios::RotaryEncoder ifeiUpBtn("IFEI_UP_BTN", "DEC", "INC", 41, 42);
DcsBios::Switch2Pos ifeiEtBtn("IFEI_ET_BTN", 44);
/* EFD GO NOGO + RESET */
DcsBios::LED lhAdvGo(0x740a, 0x0010, 40);
DcsBios::LED lhAdvNoGo(0x740a, 0x0020, 39);
DcsBios::Switch2Pos hudVideoBit("HUD_VIDEO_BIT", 38);
void setup() {
DcsBios::setup();
}
void loop() {
DcsBios::loop();
}
Pour faire suite à mon message viewtopic.php?f=286&t=215128 et à tous les tests que j'ai fait, je suis tombé sur le projet suivant sur Github https://github.com/DCSFlightpanels/dcs-bios
Après avoir suivi toute la procédure d'installation de ce DCS BIOS j'ai résolu tous mes problèmes avec mon pit et toutes mes commandes fonctionnent. Je tenais à vous partager mon retour car j'ai compris que certain avait les mêmes soucis.
Si vous rencontrez des difficultés pour l'installation je peux aider sur Discord.
Vous verez aussi l'astuce pour les switch guard qu'on peut mettre sur un seul PIN de l'Arduino
Je vous mets la copie de mon code :
Tell DCS-BIOS to use a serial connection and use interrupt-driven
communication. The main program will be interrupted to prioritize
processing incoming data.
This should work on any Arduino that has an ATMega328 controller
(Uno, Pro Mini, many others).
*/
#define DCSBIOS_IRQ_SERIAL
#include "DcsBios.h"
typedef DcsBios::RotaryEncoderT<POLL_EVERY_TIME, DcsBios::FOUR_STEPS_PER_DETENT> FourStepRotaryEncoder; // A custom rotary encoder with four quadrature steps per physical detent.
/* MASTER ARM */
DcsBios::LED masterModeAaLt(0x740c, 0x0200, 53);
DcsBios::LED masterModeAgLt(0x740c, 0x0400, 52);
DcsBios::Switch2Pos masterArmSw("MASTER_ARM_SW", 51, true);
DcsBios::Switch2Pos masterModeAa("MASTER_MODE_AA", 48);
DcsBios::Switch2Pos masterModeAg("MASTER_MODE_AG", 49);
/* EMERGENCY JETTISON */
DcsBios::Switch2Pos emerJettBtn("EMER_JETT_BTN", 50, true);
/* MAP GAIN/SPIN RECOVERY PANEL */
DcsBios::PotentiometerEWMA<5, 128, 5> hmdOffBrt("HMD_OFF_BRT", A7);
DcsBios::Switch3Pos irCoolSw("IR_COOL_SW", 25, 23);
DcsBios::LED spinLt(0x742a, 0x0800, 47);
DcsBios::SwitchWithCover2Pos spinRecovery("SPIN_RECOVERY_SW", "SPIN_RECOVERY_COVER", 24);
/* STBY INSTRUMENTS */
FourStepRotaryEncoder stbyPressAlt("STBY_PRESS_ALT", "-3200", "+3200", 26, 27);
FourStepRotaryEncoder saiSet("SAI_SET", "-3200", "+3200", 28, 29);
DcsBios::Switch2Pos saiCage("SAI_CAGE", 30);
/* UFC EFD */
FourStepRotaryEncoder ufcComm1ChannelSelect("UFC_COMM1_CHANNEL_SELECT", "DEC", "INC", 31, 22);
FourStepRotaryEncoder ufcComm2ChannelSelect("UFC_COMM2_CHANNEL_SELECT", "DEC", "INC", 36, 34);
DcsBios::PotentiometerEWMA<5, 128, 5> ufcBrt("UFC_BRT", A4);
DcsBios::Switch2Pos ufcComm1Pull("UFC_COMM1_PULL", 32);
DcsBios::PotentiometerEWMA<5, 128, 5> ufcComm1Vol("UFC_COMM1_VOL", A6);
DcsBios::Switch2Pos ufcComm2Pull("UFC_COMM2_PULL", 33);
DcsBios::PotentiometerEWMA<5, 128, 5> ufcComm2Vol("UFC_COMM2_VOL", A5);
/* HUD PANEL */
DcsBios::PotentiometerEWMA<5, 128, 5> hudAoaIndexer("HUD_AOA_INDEXER", A2);
DcsBios::PotentiometerEWMA<5, 128, 5> hudSymBrt("HUD_SYM_BRT", A3);
/* IFEI EFD */
DcsBios::Switch2Pos ifeiModeBtn("IFEI_MODE_BTN", 43);
DcsBios::RotaryEncoder ifeiUpBtn("IFEI_UP_BTN", "DEC", "INC", 41, 42);
DcsBios::Switch2Pos ifeiEtBtn("IFEI_ET_BTN", 44);
/* EFD GO NOGO + RESET */
DcsBios::LED lhAdvGo(0x740a, 0x0010, 40);
DcsBios::LED lhAdvNoGo(0x740a, 0x0020, 39);
DcsBios::Switch2Pos hudVideoBit("HUD_VIDEO_BIT", 38);
void setup() {
DcsBios::setup();
}
void loop() {
DcsBios::loop();
}