• Buscar
  • Entrar

escuadrón

Cruz de San Andrés

  • Público
  • General
  • Presentaciones
  • Academia
  • Reactores
  • Helicópteros
  • Históricos
  • Av Comercial
  • Espacio
  • Videojuegos
  • Hardware
Hardware

Cabinas Virtuales.

  • Previous
  • 1
  • …
  • 91
  • 92
  • 93
  • 94
  • 95
  • …
  • 108
  • Next
User avatar
flankercobra
Instructor
Patrocinador

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
Otra creación de Authentikit:

Image

  • Quote
User avatar
Falcon72
Invitado

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
Buenos días, he hecho una botonera para el F-18 en DCS y la he conectado a una placa “Arduino Mega 2560”. Le he cargado a la memoria del Arduino con “DCS.Bios”.
Todos los interruptores, pulsadores, conmutadores, potenciómetros y enconder funcionan y hacen lo que tienen que hacer, pero me encuentro con un problema de manejo a la hora de usar las radios (que las tengo asociadas a un Rotary-Encoder). Resulta que cada pulso que doy físicamente al encoder se refleja en el simulador con que de la emisora “1” pasa a la emisora “5”, es decir, pasa 4 emisoras y la verdad que es un fastidio.
He mirado varios post en internet pero, por una parte están en inglés y por otra, yo no controlo la programación en Arduino.

Alguien me podría echar un cable en la programación para reducir esa sensibilidad que describo.

Inserto el código Arduino que tengo actualmente, concretamente en // Fila 5 Columna 1 rotaryencoder COMM 1
y // Fila 5 Columna 4 rotaryencoder COMM 2.


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"

/* paste code snippets from the reference documentation here */
// Fila 1 Columna 1 switch2pos LAUNCH BAR RETRACT-EXTEND
DcsBios::Switch2Pos launchBarSw("LAUNCH_BAR_SW", 61);

// Fila 1 Columna 2 switch2pos LGD-TAXI LIGHT ON-OFF
DcsBios::Switch2Pos ldgTaxiSw("LDG_TAXI_SW", 62);

// Fila 1 Columna 3 switch2pos ANTI SKID ON-OFF
DcsBios::Switch2Pos antiSkidSw("ANTI_SKID_SW", 63);

// Fila 1 Columna 4 switch2pos HOOK BYPASS FIELD-CARRIER
DcsBios::Switch2Pos hookBypassSw("HOOK_BYPASS_SW", 64);

// Fila 2 Columna 1 switch3pos MODE AA-AG
DcsBios::Switch2Pos masterModeAa("MASTER_MODE_AA", 60);
DcsBios::Switch2Pos masterModeAg("MASTER_MODE_AG", 59);

// Fila 2 Columna 2 switch2pos MASTER ARM-SAFE
DcsBios::Switch2Pos masterArmSw("MASTER_ARM_SW", 58);

// Fila 2 Columna 3 switch3pos DISPENSER BYPASS-ON-OFF
DcsBios::Switch3Pos cmsdDispenseSw("CMSD_DISPENSE_SW", 57, 56);

// Fila 2 Columna 4 rotaryswitch5pos ECM XMIT-REC-BIT-STBY-OFF
const byte ecmModeSwPins[5] = {9, 10, 11, 12, 14};
DcsBios::SwitchMultiPos ecmModeSw("ECM_MODE_SW", ecmModeSwPins, 5);

// Fila 3 Columna 1 switch3pos PROBE EXTEND-OFF-EMERG EXTEND
DcsBios::Switch3Pos probeSw("PROBE_SW", 15, 16);

// Fila 3 Columna 2 switch2pos HOOK EXTEND-RETRACT
DcsBios::Switch2Pos hookLever("HOOK_LEVER", 17);

// Fila 3 Columna 3 rotaryencoder RUD TRIM L R – T-O TRIM BUTTON
DcsBios::RotaryEncoder rudTrim("RUD_TRIM", "-3200", "+3200", 5, 3);
DcsBios::Switch2Pos toTrimBtn("TO_TRIM_BTN", 4);

// Fila 3 Columna 4 switch2pos DUMP ON-OFF
DcsBios::Switch2Pos fuelDumpSw("FUEL_DUMP_SW", 21);

// Fila 4 Columna 1 momentaryswitch3pos HDG
DcsBios::Switch3Pos leftDdiHdgSw("LEFT_DDI_HDG_SW", 23, 22);

// Fila 4 Columna 2 button JETT
DcsBios::Switch2Pos selJettBtn("SEL_JETT_BTN", 24);

// Fila 4 Columna 3 rotaryswitch5pos SELECT JETT     L FIS MSL-SAFE-R FUS MSL-RACK LCHR-STORES
const byte selJettKnobPins[5] = {25, 26, 27, 28, 29};
DcsBios::SwitchMultiPos selJettKnob("SEL_JETT_KNOB", selJettKnobPins, 5);

// Fila 4 Columna 4 momentaryswitch3pos CRS
DcsBios::Switch3Pos leftDdiCrsSw("LEFT_DDI_CRS_SW", 31, 30);



// Fila 5 Columna 1 rotaryencoder COMM 1
DcsBios::RotaryEncoder ufcComm1ChannelSelect("UFC_COMM1_CHANNEL_SELECT", "DEC", "INC", 34, 32);
DcsBios::Switch2Pos ufcComm1Pull("UFC_COMM1_PULL", 33);





// Fila 5 Columna 2 potenciometro POSITION LIGHT
DcsBios::Potentiometer positionDimmer("POSITION_DIMMER", A0);

// Fila 5 Columna 3 potenciometro FORMATION LIGHT
DcsBios::Potentiometer formationDimmer("FORMATION_DIMMER", A1);





// Fila 5 Columna 4 rotaryencoder COMM 2
DcsBios::RotaryEncoder ufcComm2ChannelSelect("UFC_COMM2_CHANNEL_SELECT", "DEC", "INC", 67, 65);
DcsBios::Switch2Pos ufcComm2Pull("UFC_COMM2_PULL", 66);





// Fila 6 Columna 1 switch3pos FLIR     ON-STBY-OFF
DcsBios::Switch3Pos flirSw("FLIR_SW", 38, 39);

// Fila 6 Columna 2 switch2pos LTD R    ARM-SAFE
DcsBios::Switch2Pos ltdRSw("LTD_R_SW", 40);

// Fila 6 Columna 3 switch2pos LST NFLR    - ON-OFF
DcsBios::Switch2Pos lstNflrSw("LST_NFLR_SW", 41);

// Fila 7 Columna 1 rotaryswitch4pos RADAR    OFF-STBY-OPR-PULL EMERG
const byte radarSwPins[4] = {42, 43, 44, 45};
DcsBios::SwitchMultiPos radarSw("RADAR_SW", radarSwPins, 4);

// Fila 7 Columna 2 rotaryswitch8pos INS    OFF-CV-GND-NAV-IFA-GYRO-GB-TEST
const byte insSwPins[8] = {46, 47, 48, 49, 50, 51, 52, 53};
DcsBios::SwitchMultiPos insSw("INS_SW", insSwPins, 8);

//LED INDICADOR HOOK
DcsBios::LED arrestingHookLt(0x74a0, 0x0400, 7);

//LED INDICADOR DE QUE ESTA ENCHUFADA LA BOTONERA

const int LED=3;

void setup() {
  DcsBios::setup();
  }

void loop() {
  DcsBios::loop();
  digitalWrite(LED,HIGH);
}
  • Quote
User avatar
kf3ina
Piloto

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
nada en el código que has pegado parece hacer referencia a sensibilidad. Además, por el tipo de asignación que se hace es de tipo botón, quiere decir que cada actuación es como una pulsación (RotaryEncoder) vs otras asignaciones que sí funcionan como un valor contínuo (Potentiometer)
  • Quote
User avatar
Falcon72
Invitado

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
He leído q se puede programar para que reduzca el número de pasos pero no controlo la programación.
Gracias
  • Quote
User avatar
Angel
Cadete

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
Hace mucho que no me meto pero recuerdo que no todos los encoder funcionan igual.

Echale un vistazo al manual de DCS:Bios fijate que dice que su biblioteca utiliza los de 4 pasos por ellos por defecto ,probablemente tu tienes otros diferntes y tienes queindicarlo en elcodigo.
Los codificadores rotarios más comunes utilizan 4 pasos por detenida. Esto es lo que la Biblioteca de DCS-BIOS Arduino utiliza por defecto. Si su codificador rotual utiliza 2 o 1 pasos por detent, especifique el número de pasos pertenecido en los soportes angulares después de DcsBios::RotaryEncoder, así::Así:
// two steps per detent:
DcsBios::RotaryEncoder<2> ilsMhz("ILS_MHZ", "DEC", "INC", PIN_A, PIN_B);
Si te sigue dando problemas prueba con otro tipo de encoders.
  • Quote
User avatar
Falcon72
Invitado

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
Gracias. Voy a intentarlo así
  • Quote
User avatar
Falcon72
Invitado

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
Es simplemente añadir <2> a mi línea de código

DcsBios::RotaryEncoder<2> ufcComm1ChannelSelect("UFC_COMM1_CHANNEL_SELECT", "DEC", "INC", 34, 32);

O el número que sea q estimo q si pasan 4 pasos sería 1


Esta tarde lo pruebo. Muchas gracias y ya cuento como me ha ido
  • Quote
User avatar
Falcon72
Invitado

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
Lo he conseguido

Por un lado he puesto la siguiente línea después de #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.

Y más abajo la siguiente línea

FourStepRotaryEncoder ufcComm1ChannelSelect("UFC_COMM1_CHANNEL_SELECT", "DEC", "INC", 31, 22);


Y funciona como quería. Por cada pulso del encoder avanza o retrocede una emisora de la radio

También he aprovechado y lo he puesto en el encoder q gobierna el trimado


Muchas gracias por la ayuda y aquí queda por si a alguien le ocurriera lo mismo

Un saludo
  • Quote
User avatar
Angel
Cadete

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
Me alegra que lo hayas solucionado y gracias por compartirlo.

Para pegar codigo es mejor que uses el boton de quote , se ve mejor y no da problemas con el hmtl

:thumbsup:
  • Quote
User avatar
Falcon72
Invitado

Cabinas Virtuales.

hace 2 años

Cabinas Virtuales.

hace 2 años
Ya lo sé para la próxima.

Y ya que estamos tengo el botón del a/a y el botón de a/g en un switch de 2 posiciones ON-OFF-ON. Cuando le doy para el aire aire me lo marca perfectamente en el simulador pero cuando llevo el switch al centro no se desactiva y tengo q volver a marcar A/A para que se desactive. Igual me pasa con el A/G.

Seguramente hay algún comando para ello pero lo desconozco
  • Quote
Hardware
  • Previous
  • 1
  • …
  • 91
  • 92
  • 93
  • 94
  • 95
  • …
  • 108
  • Next
No registered users
  • © 2026 Luis Glez 'Orleans'