No1sonuk Posted December 17, 2020 Posted December 17, 2020 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. 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: I used Gold because I misremembered the indicators on the P51 as being brass coloured - they're actually black. The assembled innards: The disc is pushed down by the cap so that the switch is pressed, but the LED doesn't move. The assembled indicator: Section drawing from Fusion360: 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.
Nikolas_A Posted December 18, 2020 Posted December 18, 2020 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...
No1sonuk Posted December 18, 2020 Author Posted December 18, 2020 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.
Recommended Posts