Jump to content

Recommended Posts

Posted

Hey guys.
I thought I'd share another mini project I've been running.

It's an MS25041 -STYLE Press to test indicator.
For the rivet-counters out there (you know who you are), this is BASED ON the MS25041 spec with a few tweaks to make it easier to design and 3D print.
e.g. instead of a 15/32-32 threaded body, mine is 1/2-28

I made this for a P51 project.  I'm guessing the MS25041 spec was derived from whatever spec was used to define the indicators on the P51.

Because of the way DCS-BIOS works, it's wired to work as an illuminated switch.

 

W8Xs5lQ.jpg
The LED is shown separated because it uses 2 separate pads as it is spread either side of the switch.
DCS-BIOS uses switching to ground, so I used a common 0V connection for the LED cathode and switch.  This allows for a 3-wire setup similar to real ones.
The resistor for the LED needs to be placed in the LED signal line.

 

The components:
8r3ajLO.jpg
I used Gold because I misremembered the indicators on the P51 as being brass coloured - they're actually black.

 

The assembled innards:
F6JepvD.jpg
The disc is pushed down by the cap so that the switch is pressed, but the LED doesn't move.

 

 

The assembled indicator:

172yayL.jpg

 

Section drawing from Fusion360:

BSkstcv.jpg

 

Pressing the cap pushes the disc onto the switch.  That signal is sent to the appropriate input on DCS-BIOS by the Arduino.
The LED on signal then turns on the LED.

 

Video in operation as the Unsafe Landing Gear Light:


Pressing on the screen cockpit indicator turns on both lights, as does pressing the physical indicator cap.


Test code used for the video above:

/* use '#define DCSBIOS_DEFAULT_SERIAL' instead if your Arduino board
 *  does not feature an ATMega328 or ATMega2650 controller.
 */
#define DCSBIOS_IRQ_SERIAL
#include "DcsBios.h"


const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  3;      // the number of the LED pin


/* Declare the indicator test button pin */
DcsBios::Switch2Pos unsafeLndGearLtTest("UNSAFE_LND_GEAR_LT_TEST", buttonPin);
/* Declare the LED pin */
DcsBios::LED landingGearRed(0x500e, 0x4000, ledPin);

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

void loop() {
  DcsBios::loop();

}

STL and PCB files will follow when I've refined the design.

Posted

I don't understand why DCS adds more IO functionality than what's available in a real a/c. In a real a/c, pushing the button doesn't "talk" to avionics, it just locally connects the lamp to live voltage. Same with switch guards. Why the need to send a command for raising the guard? In a home cockpit the mechanical action of lifting the guard is enough!

 

BTW, nice build. I had a few of those but sold them when I realized there is none in the Viper cockpit...

Posted
10 hours ago, Nikolas_A said:

I don't understand why DCS adds more IO functionality than what's available in a real a/c. In a real a/c, pushing the button doesn't "talk" to avionics, it just locally connects the lamp to live voltage. Same with switch guards. Why the need to send a command for raising the guard? In a home cockpit the mechanical action of lifting the guard is enough!

Mine could be wired to work like the real ones - in fact, that was how I first tested it without DCS or an Arduino.
However, that doesn't do anything to the onscreen indicator, so I came up with this.

The only real ones I have are a slightly different version, but they're scrap ones I removed when replacing them.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...