Jump to content

JNinness

Members
  • Posts

    36
  • Joined

  • Last visited

Everything posted by JNinness

  1. Hi RAZBAM, Like your module. I was wondering if there are plans to add assignable axis or joystick buttons to the interior and exterior lighting levels. They are adjustable at this stage only with the mouse. Unless I've completely missed something. I'm playing with the release version of DVS not the Beta. Sent from my SM-G930F using Tapatalk
  2. Wire Colours: Red = 3.3v (Only needed these for the axis control potentiometer) White = Analouge Input Green = Digital Input wired from switch to board. Black = Ground chained together through entire system then to ground on board. If you are using heavy duty switches you are better of using connectors that are crimped on. Depends on your switch they might have screw fittings as well or be solder tag microswitches. Sent from my SM-G930F using Tapatalk
  3. Internal photos. Wire colours: Red = 3.3v Black = Ground White = Analouge Input Green = Digital Input There is no wiring diagram because I never drew one. I just did it. Sorry I'm not an engineer or sparky. Sent from my SM-G930F using Tapatalk
  4. Hey, It really depends what you want to do and what you code yourself. The diagram I've drawn (not my best work). Shows you 2 pos switch and your 3 pos (on-off-on) switch. The ground wires get chained together then led to the ground on the board. Each other side of the switch then get a single wire conbecting them to a digital input. I use the pull_up command to read the input on the switch. Then you do the coding side. You can achieve a lot with the code. I can have the code written to act as a pulse (one quick button tap) on cycle, constantly held whilst on or one button when flicked on and another when switched off. I will attach some pics of the wiring side of my projects when I get home to show the setup. The real question is what do you want to do with the box? Sent from my SM-G930F using Tapatalk
  5. Hi All, So it has been a while since my last post, work has been busy but I did take some time off recently and as such I got around to my next project! The title says it all! So in discussions with my other squadron member we put our heads together and over a few beers we discussed my ideas around a lighting panel. He somehow managed to convince me to build a panel for him (Done the work but haven't given it to him yet, bad friend I know). One of the things he tried to convince me off is that their really wasn't a need to have a dial for every single light in the cockpit. I Know that some of you will right now be reaching for your pitchforks! :devil: But after a bit more soul searching I realized he was right! So we came up with a concept to code multiple axis to only one potentiometer. The end result is this DIY lighting panel. This is totally plug and play using the Arduino joystick library and as such can be used to suit any module. As addressed in my YouTube video big issue around that is that the A10C doesn't have assignable axis for the lighting systems and instead uses joystick buttons. The solution was to add an override functionality which completely changes the way the potentiometers function and switches their output from a joystick axis to a joystick button. See the attached YouTube Video and the code. If anyone wants to build their own have fun! :joystick: Light_Panel_JM.txt
  6. Yeah, It can be achieved with a microswitch monitoring the cover I did think about it but ultimately decided against it as it would need another input of it's own. Sent from my SM-G930F using Tapatalk
  7. Looks good... shame you have to order 100 minimum though! Sent from my SM-G930F using Tapatalk
  8. Great thanks for the link! Sent from my SM-G930F using Tapatalk
  9. Good luck! I look forward to seeing it when it's finished! This will work well for the Harrier as well!
  10. Yes they are Sent from my SM-G930F using Tapatalk
  11. Thanks! Here is my full setup. I call it the dad on a budget! The monitor is on a wall mounted swing arm so I can switch between flying and working on the same machine easily. Sent from my SM-G930F using Tapatalk
  12. Patience! I've never uploaded to youtube before and it is taking longer than I though!
  13. /* This program is designed to emulate the Armament Panel in the F5E-3 for DCS, Utilizing an Arduino Leonardo. Written by John Ninness */ #include <Joystick.h> #include <Keyboard.h> #include "Keyboard.h" Joystick_ Joystick; //Variables //Input digital pins (unchanging) const int Master_Control = 0; const int Left_Wing_Station = 1; const int Left_Out_Station = 2; const int Left_In_Station = 3; const int Centre_Station = 4; const int Right_In_Station = 5; const int Right_Out_Station = 6; const int Right_Wing_Station = 7; const int Bomb_Interval_Up = 9; const int Bomb_Interval_Down = 8; const int Guns_Missiles = 11; const int Camera = 10; const int Jettison_Switch_Up = 13; const int Jettison_Switch_Down = 12; //Input analogue pins (unchanging) int Missile_Volume = A0; int Fuse_Selector = A2; int Stores_Selector = A1; int Jettison_Selector = A3; //Input analogue values (changing) int Missile_Volume_Val = 0; int Fuse_Selector_Val = 0; int Fuse_Selector_Last_Val = 0; int Stores_Selector_Val = 0; int Stores_Selector_Last_Val = 0; int Jettison_Selector_Val = 0; //Input digital pins state (changing) int Master_Control_State = 0; int Left_Wing_Station_State = 0; int Left_Out_Station_State = 0; int Left_In_Station_State = 0; int Centre_Station_State = 0; int Right_Wing_Station_State = 0; int Right_Out_Station_State = 0; int Right_In_Station_State = 0; int Bomb_Interval_Up_State = 0; int Bomb_Interval_Down_State = 0; int Guns_Missiles_State = 0; int Camera_State = 0; int Jettison_Switch_Up_State = 0; int Jettison_Switch_Down_State = 0; //Input analogue pins state (changing) //Assigned keys variables (in ASCII Code) char LCtl = 128; char LShf = 129; char LAlt = 130; char LWin = 131; char RCtl = 132; char RShf = 133; char RAlt = 134; char RWin = 135; void setup() { Joystick.begin(); pinMode(Master_Control, INPUT_PULLUP); pinMode(Left_Wing_Station, INPUT_PULLUP); pinMode(Left_Out_Station, INPUT_PULLUP); pinMode(Centre_Station, INPUT_PULLUP); pinMode(Left_In_Station, INPUT_PULLUP); pinMode(Right_Wing_Station, INPUT_PULLUP); pinMode(Right_Out_Station, INPUT_PULLUP); pinMode(Right_In_Station, INPUT_PULLUP); pinMode(Bomb_Interval_Up, INPUT_PULLUP); pinMode(Bomb_Interval_Down, INPUT_PULLUP); pinMode(Guns_Missiles, INPUT_PULLUP); pinMode(Camera, INPUT_PULLUP); pinMode(Jettison_Switch_Up, INPUT_PULLUP); pinMode(Jettison_Switch_Down, INPUT_PULLUP); Keyboard.begin(); } void loop() { while (digitalRead(Master_Control) == LOW) { Missile_Volume_Val = analogRead(Missile_Volume); Missile_Volume_Val = map(Missile_Volume_Val, 0, 1023, 0, 255); Joystick.setZAxis(Missile_Volume_Val); Fuse_Selector_Val = map(analogRead(Fuse_Selector), 0, 700, 0, 4); Stores_Selector_Val = map(analogRead(Stores_Selector), 0, 700, 0, 4); Jettison_Selector_Val = map(analogRead(Jettison_Selector), 0, 700, 0, 7); if (Fuse_Selector_Val < Fuse_Selector_Last_Val) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press(93); delay(1); Fuse_Selector_Last_Val = Fuse_Selector_Val; Keyboard.release(93); Keyboard.release(LShf); Keyboard.release(LCtl); } else if (Fuse_Selector_Val > Fuse_Selector_Last_Val) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press(91); delay(1); Fuse_Selector_Last_Val = Fuse_Selector_Val; Keyboard.release(91); Keyboard.release(LShf); Keyboard.release(LCtl); } if (Stores_Selector_Val < Stores_Selector_Last_Val) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('e'); delay(1); Stores_Selector_Last_Val = Stores_Selector_Val; Keyboard.release(LCtl); Keyboard.release(LShf); Keyboard.release('e'); } else if (Stores_Selector_Val > Stores_Selector_Last_Val) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('w'); delay(1); Stores_Selector_Last_Val = Stores_Selector_Val; Keyboard.release('w'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (Jettison_Selector_Val == 5) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('9'); delay(50); Keyboard.release('9'); delay(250); Keyboard.press('0'); while (Jettison_Selector_Val == 5) { Jettison_Selector_Val = map(analogRead(Jettison_Selector), 0, 700, 0, 7); delay(1); } Keyboard.release('0'); Keyboard.release(LShf); Keyboard.release(LCtl); } else if (Jettison_Selector_Val == 6) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('d'); while (Jettison_Selector_Val == 6) { Jettison_Selector_Val = map(analogRead(Jettison_Selector), 0, 700, 0, 7); delay(1); } Keyboard.release('d'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Left_Wing_Station) == LOW & Left_Wing_Station_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('1'); delay(1); Left_Wing_Station_State = 1; Keyboard.release(LCtl); Keyboard.release(LShf); Keyboard.release('1'); } else if (digitalRead(Left_Wing_Station) == HIGH & Left_Wing_Station_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('1'); delay(1); Left_Wing_Station_State = 0; Keyboard.release('1'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Left_Out_Station) == LOW & Left_Out_Station_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('2'); delay(1); Left_Out_Station_State = 1; Keyboard.release('2'); Keyboard.release(LShf); Keyboard.release(LCtl); } else if (digitalRead(Left_Out_Station) == HIGH & Left_Out_Station_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('2'); delay(1); Left_Out_Station_State = 0; Keyboard.release('2'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Left_In_Station) == LOW & Left_In_Station_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('3'); delay(1); Left_In_Station_State = 1; Keyboard.release(LCtl); Keyboard.release(LShf); Keyboard.release('3'); } else if (digitalRead(Left_In_Station) == HIGH & Left_In_Station_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('3'); delay(1); Left_In_Station_State = 0; Keyboard.release('3'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Centre_Station) == LOW & Centre_Station_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('4'); delay(1); Centre_Station_State = 1; Keyboard.release('4'); Keyboard.release(LShf); Keyboard.release(LCtl); } else if (digitalRead(Centre_Station) == HIGH & Centre_Station_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('4'); delay(1); Centre_Station_State = 0; Keyboard.release('4'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Right_In_Station) == LOW & Right_In_Station_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('5'); delay(1); Right_In_Station_State = 1; Keyboard.release(LCtl); Keyboard.release(LShf); Keyboard.release('5'); } else if (digitalRead(Right_In_Station) == HIGH & Right_In_Station_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('5'); delay(1); Right_In_Station_State = 0; Keyboard.release('5'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Right_Out_Station) == LOW & Right_Out_Station_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('6'); delay(1); Right_Out_Station_State = 1; Keyboard.release('6'); Keyboard.release(LShf); Keyboard.release(LCtl); } else if (digitalRead(Right_Out_Station) == HIGH & Right_Out_Station_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('6'); delay(1); Right_Out_Station_State = 0; Keyboard.release('6'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Right_Wing_Station) == LOW & Right_Wing_Station_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('7'); delay(1); Right_Wing_Station_State = 1; Keyboard.release(LCtl); Keyboard.release(LShf); Keyboard.release('7'); } else if (digitalRead(Right_Wing_Station) == HIGH & Right_Wing_Station_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('7'); delay(1); Right_Wing_Station_State = 0; Keyboard.release('7'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Bomb_Interval_Up) == LOW & Bomb_Interval_Up_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('q'); delay(1); Bomb_Interval_Up_State = 1; Keyboard.release('q'); Keyboard.release(LShf); Keyboard.release(LCtl); } else if (digitalRead(Bomb_Interval_Up) == HIGH & Bomb_Interval_Up_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('a'); delay(1); Bomb_Interval_Up_State = 0; Keyboard.release('a'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Bomb_Interval_Down) == LOW & Bomb_Interval_Down_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('a'); delay(1); Bomb_Interval_Down_State = 1; Keyboard.release('a'); Keyboard.release(LShf); Keyboard.release(LCtl); } else if (digitalRead(Bomb_Interval_Down) == HIGH & Bomb_Interval_Down_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('q'); delay(1); Bomb_Interval_Down_State = 0; Keyboard.release('q'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Jettison_Switch_Up) == LOW & Jettison_Switch_Up_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('s'); delay(1); Jettison_Switch_Up_State = 1; Keyboard.release('s'); Keyboard.release(LShf); Keyboard.release(LCtl); } else if (digitalRead(Jettison_Switch_Up) == HIGH & Jettison_Switch_Up_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('f'); delay(1); Jettison_Switch_Up_State = 0; Keyboard.release('f'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Jettison_Switch_Down) == LOW & Jettison_Switch_Down_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('f'); delay(1); Jettison_Switch_Down_State = 1; Keyboard.release('f'); Keyboard.release(LShf); Keyboard.release(LCtl); } else if (digitalRead(Jettison_Switch_Down) == HIGH & Jettison_Switch_Down_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('s'); delay(1); Jettison_Switch_Down_State = 0; Keyboard.release('s'); Keyboard.release(LShf); Keyboard.release(LCtl); } if (digitalRead(Guns_Missiles) == LOW & Guns_Missiles_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('t'); delay(50); Keyboard.release('t'); delay(50); Keyboard.press('g'); delay(50); Guns_Missiles_State = 1; Keyboard.release('g'); Keyboard.release(LCtl); Keyboard.release(LShf); } else if (digitalRead(Guns_Missiles) == HIGH & Guns_Missiles_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('b'); delay(50); Keyboard.release('b'); delay(50); Keyboard.press('t'); delay(50); Guns_Missiles_State = 0; Keyboard.release('t'); Keyboard.release(LCtl); Keyboard.release(LShf); } if (digitalRead(Camera) == LOW & Camera_State == 0) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('t'); delay(50); Keyboard.release('t'); delay(50); Keyboard.press('b'); delay(50); Camera_State = 1; Keyboard.release('b'); Keyboard.release(LCtl); Keyboard.release(LShf); } else if (digitalRead(Camera) == HIGH & Camera_State == 1) { Keyboard.press(LCtl); Keyboard.press(LShf); Keyboard.press('g'); delay(50); Keyboard.release('g'); delay(50); Keyboard.press('t'); delay(50); Camera_State = 0; Keyboard.release('t'); Keyboard.release(LCtl); Keyboard.release(LShf); } delay(100); } }
  14. Hi All, I love flying DCS and in particular multiple air frames. I admire the work that many on these forums have put into their Sim Pits and I do regard many of them with Envy, alas with young children I simply do not have the space for a full sim pit. I have instead worked on a more modular approach. So I have completed my first "Modular" Sim Pit Idea. This was the F5E Armament Panel. This panel was chosen due to the manual activation that are required for the delivery of ordnance. The requirements for the panel were that it had to be easy to setup and pack away, and not require third party software to function with DCS. I ended up settling on the Arduino Leonardo. Due to the limited space on the assembly box I chose I did have to make a tiny alteration on button and switch placement on the missile volume control and on the selective jettison. I also had to replace the 4 position toggle switch to a rotary switch. Build time ended up being 3 days, however I had some experience with C++ programming from high school (That was 18 years ago though) and have experimented with inputs and outputs from Arduino and into the computer previously. As my wife has pointed out to me however I didn't take any pictures of me actually building the panel so it is not the best how to guide, sorry for that. So to make it up to those interested I have included the Arduino code below. and a link to the Youtube video will be added once it has uploaded. Happy flying! :pilotfly:
  15. Great work guys Sent from my SM-G930F using Tapatalk
  16. @Gliptal Thank you for your response and for the origin of your information, it is appreciated. It might be worth keeping in mind that parts of the game engine may be from the original Lock On: Modern Air Combat. This is an engine that has been in development in the very early 2000s but all of the reference documents are from 2005 or later. It is possible that changes suggested in your document Gliptal are a change from the earlier call to spilt them and avoid confusion. As such the Mudspike call may be historic in nature. It is worth noting that the term is discussed in an earlier forum on Ubisoft in 2004. http://forums.ubi.com/showthread.php/51196-Whats-a-mud-spike-Forums
  17. Yes I can see that... Mud does not mention a lock on you... Merely the presence of a ground radar. Spiked is an A2A term. Dirt is a term that does not exist in the list. Mud Spike does not exist in the list either. Mud Spike is a term that has been used in the sim I suggested a possible origin for the term and asked for any suggestions or knowledge on this. Quoting the list does clarify the exact meaning for those who were unsure if that was your aim. Can you address the other points in my post? The reason I asked is from my Military experience we used words for brevity that are not present in the list. Now granted my service is now long behind me. So I was putting out a general call for possible input and if you can provide an explanation as well. Sent from my SM-G930F using Tapatalk
  18. Is it Mud Spike two separate calls mud to designate ground radar and spiked to represent a change of status? Where are you getting your info from? Just curious, as the SIM uses the term. Is it a historic call? Or made up? Sent from my SM-G930F using Tapatalk
  19. Then correct them [emoji3] Sent from my SM-G930F using Tapatalk
  20. Weapon Release Words: Pickle = Bombs (Guided & Unguided) Dart = Rocket (Not sure) Rifle = Maverick Long Rifle = Other Air Ground Missile Magnum = Anti-Radiation Air Ground Missile Guns = Guns/Cannons Fired Fox 1 = Active Radar guided missile (AIM7) Fox 2 = IR guided missile (AIM9) Fox 3 = Semi-Active radar guided missile (AIM120) Ground Attack Words: In From [direction] = Put in direction when starting attack run Out [direction] = clearing attack run Splash = Target hit/destroyed Defensive [threat] [location] = your under fire/attack and your telling everyone ( Defensive, SA-6, North East Kobuleti) Abort/Aborting = Stop or stopping attack run Radar Warnings: Mud [type] [direction/location] = ground threat on RWR but not locked on you Spiked = something has locked on to you Nails [type] [direction/location]= Hostile air radar Singer = missile launch indication on RWR SAM [location] = visual detection of SAM launch Most of the other ones have been stated by others such as tally bandit ect. Sent from my SM-G930F using Tapatalk
×
×
  • Create New...