BuffNav Posted April 18, 2023 Posted April 18, 2023 I was wondering if someone could look at my code I'm new at this. I have a 3 position JFS Switch that is wired to an arduino board. Then I have a 12v magnet powered by a MOSFET board that is getting a signal from the Arduino board based on the JFS Switch position. Ok so I'm able to get the switch to magnetically release when the JFS Run light goes out but I can't get the switch to hold unless I delete the JFS Run Light code. Can someone help me find out where I messed up in the code so that when I flip the switch to either JFS start 1 or 2 I get a signal to the MOSFET for the magnetic to get power and then release the magnetic when the run light goes out. Thanks! /* 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" int JfsSwChange_Coil = 2; // Mag int JfsSwChange_Coils = 2; DcsBios::Switch3Pos jfsSw("JFS_SW", 3, 4); // JFS Switch void onJfsSwChange(unsigned int newValue) { switch (newValue){ case 0: digitalWrite(JfsSwChange_Coil, HIGH); break; case 1: digitalWrite(JfsSwChange_Coil, LOW); break; case 2: digitalWrite(JfsSwChange_Coil, HIGH); break; } } DcsBios::IntegerBuffer jfsSwBuffer(0x4424, 0x0003, 0, onJfsSwChange); //JFS Run Light void onLightJfsRunChange(unsigned int newValue) { switch (newValue){ case 0: digitalWrite(JfsSwChange_Coils, LOW); break; case 1: digitalWrite(JfsSwChange_Coils, HIGH); break; } } DcsBios::IntegerBuffer lightJfsRunBuffer(0x447c, 0x0020, 5, onLightJfsRunChange); void setup() { DcsBios::setup(); pinMode (JfsSwChange_Coil, OUTPUT); pinMode (JfsSwChange_Coils, OUTPUT); } void loop() { DcsBios::loop(); }
Recommended Posts