Jump to content

goodpoints

Members
  • Posts

    21
  • Joined

  • Last visited

Personal Information

  • Flight Simulators
    DCS (CA, A-10C, Ka-50, MiG-15, MiG-21, F-86, P-51, Bf 109, FW 190), IL-2: 46/CloD/BoS, Rise of Flight, WoFF, Falcon BMS
  • Location
    Maryland, USA
  • Interests
    wargaming / conflict simulation in general: board games & PC
  1. I got into DCS last summer and generally played only singleplayer with the occasional hop into the 104's server. I've recently come back to DCS after a hiatus of a few months and am working on getting reacquainted with 1.5 as well as refreshing all my skills/knowledge for the different modules I fly. I've started to really wish for a good group to fly coop and PvP missions with. I've been looking through this board and checking out various squadrons and the like for a while but they either seem to not be active or aren't really what I'm looking for. I'd like to find a group that: is adult, polite, and friendly has at least 6 or so active players flies a wide range of DCS modules. I have A-10C, Ka-50, MiG-15, MiG-21, F-86, P-51, Bf 109, FW 109, and CA. Don't have NTTR yet, planning to get the Huey and M2000C soon. creates/flies missions based on historical record (if available) or otherwise plausible scenarios is interested in studying and adopting historically appropriate doctrine, tactics, and procedure for missions does the above without necessary trying to emulate an actual unit outside of the mission and maintains a relatively casual environment. While I can keep regular commitments, I'm not particularly interested in strict training regimens or military rank and promotions. preferably plays other multiplayer flight sims: RoF, Il-2, or BMS. I appreciate DCS for the level of fidelity, though I play flight sims more out of historical interest than interest in aviation by itself. I also play or am interested in other types of multiplayer milsims and wargames, e.g. Command Ops 2, CMANO, AGEod games, Steel Beasts, Red Orchestra, Squad etc. If you think I may be a good fit for your group or one that you know of, please let me know. I'm on the US east coast (EST), have a fairly open though irregular schedule (typically free in the evenings), use a custom built HOTAS (modified F-16 stick/F-15 throttle) with pedals and Track IR, have about 120 hours total of DCS experience, and am at least minimally functional in all the modules I own.
  2. Wow. Looks so much more natural to use for helos than a fixed wing throttle. I would mount the cyclic grip on a MSFF2 though , cheap, easy to do, and having force trim is just invaluable imo. Though you would have to sacrifice the long throw as the shaft would have to be much shorter so as to not overwhelm the FF motors. You might be able to make the throttle idle detent functional with some lua editing similar to this. (or maybe you could try DCS BIOS, though not sure if it works with non-Arduino MCUs)I wish DCS would implement a simple analogue axis mapping tool for detents for idle, afterburners, WEP, etc. like BMS has. But watching your video is me really impatient for the next sale so I can get the Huey. The Komodo Ka-50 cyclic/collective looks like they'll be fantastic though. I might have to look into making my own generic collective to use for different helos.
  3. Didn't know they were so rare. Fortunately it seems I should be able to get debolestis' old pots. Though I'm sure it would be possible to figure out some way to mount a different size pot by removed some of the mounting tabs or something. So how are the hall sensors working with the throttle? I think I remember seeing that either or both of you guys did that with yours. For the time being though, it works fine as a non-split throttle. Though the two handles wiggle a bit when they're locked together and I notice that the plastic devider is wiggling as well. Though I think it's mostly that the slot on the left handle is a bit wider than the tab that locks in. Eventually I'd like to replace that plastic divider with a metal one like I saw debolestis did, does that improve the wiggling? It's also a bit annoying that the switches wiggle about as well, anyone figured out a way to stop that short of putting in different switches? But overall I'm very pleased with it. Together with my TM F-16 grip mounted on a Sidewinder FF2 (which by the way sokol, I did end up cutting down the shaft extension by about half from what I posted in that Il-2 thread, much better now) , I got about the closest thing to a TM Warthog for less than $100. :thumbup: I'm also thinking about swapping out the push-pull radio switch (top one on right throttle handle) for the higher versatility of a hat switch like the A-10 has and I'll probably mount a few more switches in the throttle base. I'm also thinking about possibly trying to mount a small track ball and 2 buttons somewhere on the throttle for easily reachable mouse control, though I'm not sure if there's really room anywhere. Anyone tried something like that?
  4. If you're not seeing the + cursor you probably have clickable cockpit mode off. Look for the "Clickable Cockpit Mouse Mode On/Off" command in the General category for whatever modules you're using.
  5. Hands On Throttle And Stick And Vivisected Keyboard (good luck not bumping that trackball when you're trying to press every other button)
  6. Modifying someone else's head/face tracking profile will only cause you more hassle than making your own from scratch. People have their monitors at different heights, cameras at different angles, chairs at different heights/distances, clips at different positions on head, different ambient lighting, etc. etc. If you want a tutorial on how to set up your own profile, check out this . It's for TrackIR but all the same principles apply with any type of headtracking system as far as adjusting curves, smoothing, etc. Just ignore all the fancy TrackIR 3D view stuff (I actually prefer opentrack's software as you can set as many points on a curve as you want vs. TIR where you're limited to 5) It really helps to have DCS open in window so you can easily see how your curves translate in-sim and quickly switch back and forth between DCS and your tracking software. Getting the "perfect feeling" takes a long time, I'm always making little adjustments to my profiles. A You will also get more accustomed to making fine head movements as you use it more, so then you might want to make it more sensitive or lessen deadzones. Also, you will probably want to use different profiles for different modules: My KA-50 profile has steep-but-even yaw curves (as you need to access switches that are behind the pilot's head) but very little X/Y/Z translation (cockpit is quite small and most switches are close to the pilot's face) Whereas, in close-range gunfighters like the WWII fighters or the Sabre/MiG-15 where your head is constantly moving, I have yaw curves that increase sharply toward the left/right extremes so I can check my six and asymmetric pitch curves (steeper up than down) so I can see what's above me easily. It's time consuming, but a good profile makes all the difference.
  7. I found that the problem was that the hat buttons weren't all the way pushed into the housing. Might not be a problem if you were able to unscrew it from the outside and keep the PCB (unlike me), but it did take a bit of force (and hot glue) to get it seated in there. I also sanded down the side wall of the button cap about half a cm so it isn't bumping up against the plastic wall as much. I like the concave hat though, helps prevent accidental bumping when using the throttle. I got my pots hooked up and everything running, unfortunately one of the slide pots was spiking terribly and I found the cause to be a crack clean through the PCB with the resistor strip. Anyone have a recommendation for decent slide pots that will fit? Not sure if I want to mess with Hall sensors yet. Here's the Teensy/Arduino sketch though: /* USB Suncom SFS Conversion for Teensy 2.0 Original author: 'gerryk' (gerryk.com), modified by forums.eagle.ru member 'goodpoints' You must select Joystick from the "Tools > USB Type" menu Throttle Buttons are muxed into rows and columns SEL1, 2, 3 (columns) on Pins 21,20,19 Rows on pins 0,1,2,3,4,5,6,7- all one register Buttons read LOW on activation, so initial state is HIGH Wiring from Pots according to the number labels near the terminals: 1: +5V 2: (wiper) Analog Inputs 9 (pin 12) and 10 (pin 11) 3: GND */ // 2-dimensional array of row pin numbers: const int row[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; // 2-dimensional array of column pin numbers: const int col[3] = { 21, 20, 19 }; int buttonstate[24]; int buttonprevstate[24]; void setup() { for (int x = 0; x < 24; x++) { buttonstate[x] = 1; buttonprevstate[x] = 1; } for (int x = 0; x < 3; x++) { pinMode(col[x], OUTPUT); } for (int x = 0; x < 8; x++) { pinMode(row[x], INPUT_PULLUP); } Joystick.useManualSend(true); } void loop() { digitalWrite(col[0], 0); digitalWrite(col[1], 1); digitalWrite(col[2], 1); for (int y = 0; y < 8; y++) { if (digitalRead(row[y]) == 0) { buttonstate[y] = 0; if (buttonstate[y] != buttonprevstate[y]) Joystick.button(1 + y, 1); } else { buttonstate[y] = 1; if (buttonstate[y] != buttonprevstate[y]) Joystick.button(1 + y, 0); } buttonprevstate[y] = buttonstate[y]; } digitalWrite(col[0], 1); digitalWrite(col[1], 0); digitalWrite(col[2], 1); for (int y = 0; y < 8; y++) { if (digitalRead(row[y]) == 0) { buttonstate[8 + y] = 0; if (buttonstate[8 + y] != buttonprevstate[8 + y]) Joystick.button(9 + y, 1); } else { buttonstate[8 + y] = 1; if (buttonstate[8 + y] != buttonprevstate[8 + y]) Joystick.button(9 + y, 0); } buttonprevstate[8 + y] = buttonstate[8 + y]; } digitalWrite(col[0], 1); digitalWrite(col[1], 1); digitalWrite(col[2], 0); for (int y = 0; y < 5; y++) { //only 5 rows here (pins 0 thru 4) if (digitalRead(row[y]) == 0) { buttonstate[16 + y] = 0; if (buttonstate[16 + y] != buttonprevstate[16 + y]) Joystick.button(17 + y, 1); } else { buttonstate[16 + y] = 1; if (buttonstate[16 + y] != buttonprevstate[16 + y]) Joystick.button(17 + y, 0); } buttonprevstate[16 + y] = buttonstate[16 + y]; } Joystick.sliderLeft(analogRead(9)); Joystick.sliderLeft(analogRead(10)); Joystick.send_now(); } For reference, I rewired to the following matrix scheme: the four switches on right handle are Column A (col[0]) , the combined eight buttons on the two hat switches are Column B (col[1]), and everything in the left handle is Column C (col[2]) and are on Rows 0 thru 4 . A wire was added to the pinkie switch so it functions as a two way switch (unlike original), so the wiring is the same as the two way switches on the right handle.
  8. hey all, I've been working on a Suncom SFS USB conversion using a Teensy 2.0 and some modifications of gerryk's Arduino code. I totally rewired the buttons/pots and added new diodes (8x3 matrix) just for good measure and to be in a more sensible arrangement. (all right side switches are one column, hats are one column, and all left side buttons are a separate column) I replaced the left side pinkie switch as the original was broken on the one I bought. I also added another row line to the pinkie switch, which the original lacked, so it will function as 2 buttons. I finally managed to figure out the necessary modifications to gerryk's code to get all the buttons working, once I finish hooking up the pots (and possibly wire the buttons & switch on the base to a 4th column) I'll upload the Arduino sketch. The 4 screws securing the plastic enclosure and PCB for the left hat switch were corroded so the heads stripped when I tried to unscrew them. So, unable to get the screws out, I ended up just breaking apart the PCB until I could get the 2 switch sections out without damaging the buttons. I managed to do so without damaging the traces that connect the solder pads for the button wires to the button terminals, so I reused those and just wired new diodes directly to the terminals. Once I had the 2 switches back in place, there wasn't enough remaining of the PCB to screw them in place, so I secured them to the handle interior with some hot glue. While the hat switch buttons all read fine, I'm having some trouble getting the spring-loaded metal lever on the left hat to activate the left/right buttons when the button cap is one (the concave one), though I can do so fine by moving the lever itself with a screwdriver. It seems like the lever either doesn't come up high enough or the cap is sunken too far into the enclosure. I confirmed with a multimeter that all 4 hat buttons are reading around the same voltage to rule out a weak/intermittent button connection. Anyone know if there is something like a tiny washer or plastic connector/spacer between the hat cap and the metal lever so that the cap sits a bit higher? My cap also doesn't fit snugly on the lever anymore (though it did while I got it) so I'm wondering if I lost something while I was disassembling it. (taken a look around, haven't seen anything) Trying to figure out some way to jury-rig, but right now all I could think of was some sticky tack inside the button cap shaft but it's not working all that well.
  9. Thanks for your reply and sorry for the late response, Thanks a ton for your clarifications on the code, I have a better understanding of what's going on now. Now I've just gone back to basics though and am just trying to get the six push buttons to work. So, if it's indeed possible, I've attempted to modify the code for a 6x1 matrix. However, my results are the same as my previous attempts: I get no response at all in Windows joystick config from the throttle buttons, while the joystick buttons all still work. (should I be using something different to analyze the buttons? I don't understand how to use Arduino's serial monitor) Here's the code sections I modified to try using a 6x1 matrix: // 2-dimensional array of row pin numbers: const int row[6] = { 0,1,2,3,4,5 }; // 2-dimensional array of column pin numbers: const int col[1] = { 26 }; int buttonstate[24]; int buttonprevstate[24]; /* const int buttonlookup[6][1] = { {19,20,21,22,23,24,25,26}, {27,28,29,30,,,,}, {31,32 digitalWrite(col[0], 0); for (int y = 0; y < 6; y++) { if (digitalRead(row[y]) == 0) { buttonstate[y] = 0; if (buttonstate[y] != buttonprevstate[y]) Joystick.button(19 + y, 1); } else { buttonstate[y] = 1; if (buttonstate[y] != buttonprevstate[y]) Joystick.button(19 + y, 0); } buttonprevstate[y] = buttonstate[y] Just to make sure I didn't mess up the diode wiring: I'm using IN4148 diodes and the cathode end is the side with the black line? So the black line should be closer to the button terminal? I actually decided to just get an SFS Throttle as well as I found one for $35 on ebay and it's a huge improvement in functionality. I'd still like to get the WCS working though. (could always use it as mixture control or something) Unfortunately I'm having issues with the SFS too, some buttons are constantly on and some are reading as the same button. But since all the SFS + the F16 buttons would exceed the 32 button limit, I just decided to order another teensy board and make them separate devices. There's already a thread on SFS usb conversion though, so I think I'll post in there if I can't figure that out. - Jacob
  10. First off, be warned I'm next to clueless when it comes to building electronic and programming. That said, the current project I'm attempting is a USB conversion (using a Teensy 2++) of a Thrustmaster F-16 FLCS stick and Mark II WCS throttle with the stick grip being mounted on a MS FF2. So only the buttons from the FLCS are being used, and they're read via the original shift registers and will be plugged into the same Teensy that the throttle button matrix and pot I have will be connected to. I've completed the first half of the project, the F-16 mounted on my FF2 and all the buttons are working. It works great so far, the throttle however has got me stumped. I've wired the push buttons and switches in a 6-row diode matrix scheme to the best of my abilities (with some very gracious help from sokol1) but I can't figure out how to code it in teensyduino. So the throttle unit has: 6 push buttons 1 3-way ON-OFF-MOM rocker 1 3-way ON-OFF-ON rocker 2 2-way ON-(NONE)-ON DPDT switches I still don't entirely understand how the switches can work, but I believe I have it wired so the DPDTs will work like: switch up = FUNC1 ON, FUNC2 OFF, switch down = FUNC1 OFF, FUNC2 ON. And I believe I have the rockers wired so the UP and DOWN positions are 2 seperate inputs and the CENTER position is OFF. (the idea being that I could use them for something like the A-10's Boat or China Hat Switch with some possible lua editing or macros) Here's a schematic of what I have so far, text is color-coded by wire (black slashthrough for wires with black stripes): and the current teensy connections ('S' denotes the 5 wires for the stick handle): Note, I haven't hooked up the switches in the base yet as I'm just trying to get the buttons to work so I can then experiment more with how I want the switches set up. So, as I understand it, my current matrix scheme is: B1,D1 |S1,D2 | S1,D3 B2,D1 | B3,D1 | B4,D1 | B5,D1 | B6,D1 | I'm trying to work off a Teensy 3.0 sketch intended for a TM F-22 stick (same wiring as the F-16) + Suncom SFS throttle I found on this blog with some slight modification needed to get the stick shift registers working. I'm just not understanding at all how the code for the throttle matrix works, I've tried just changing the values for Column/Row amounts and pins but the throttle is unresponsive. (though the stick still works) The examples for coding a keypad in matrix seemed much simpler than this and like something I could manage, but I just have no idea what I'm looking at now and I haven't been able to find much relevant info that would help someone with as little programming knowledge as me. If someone would be able to help me understand what I'm looking at and how to modify it for my setup, I would be just overjoyed to finally have my HOTAS up and running. The sketch (with my current modifications as described before) is as follows: /* USB Thrustmaster F22 & Suncom SFS Conversion for Teensy 3.1 MCU You must select Joystick from the "Tools > USB Type" menu Throttle Buttons are muxed into rows and columns SEL1, 2, 3 (columns) on Pins 17, 18, 19 Rows on pins 27, 0, 1, 2, 3, 4 - all one register Buttons read LOW on activation, so initial state is HIGH Joystick Buttons are muxed into shift registers, use the SPI protocol to read them F22 Shift-reg are 3 x HCF4021BE Wiring from Handle to SPI as follows Brown: +5v (VIN) Green: GND Orange: SCLK (pin13) Red: SS (pin10) Yellow: MISO (pin12) Wiring from Pots as follows - I have X & Y on A2 & A3. I have Left & Right throttles from Suncom SFS Throttle to A0 & A1 1: 3.3v 2: (wiper) Analog Inputs 3: GND */ #include <SPI.h> const int ss = 20; unsigned int buttonInputs1; // data read from SPI unsigned int buttonInputs2; unsigned int buttonInputs3; unsigned int pitch, roll, throttle1, throttle2; // 2-dimensional array of row pin numbers: const int row[6] = { 27, 0, 1, 2, 3, 4 }; // 2-dimensional array of column pin numbers: const int col[3] = { 26, 25, 24 }; int buttonstate[24]; int buttonprevstate[24]; /* const int buttonlookup[6][3] = { {19,20,21,22,23,24,25,26}, {27,28,29,30,,,,}, {31,32 */ #define PINKY !(buttonInputs1 & 0x80) /* Pinky Switch */ #define TG1 !(buttonInputs1 & 0x40) /* Trigger 1 */ #define TG2 !(buttonInputs1 & 0x20) /* Trigger 2 */ #define S1 !(buttonInputs1 & 0x10) /* Nose Wheel Steering */ #define PADDLE !(buttonInputs1 & 0x08) /* Paddle Switch */ #define THUMB !(buttonInputs1 & 0x04) /* Pickle */ #define H1D !(buttonInputs2 & 0x80) /* HAT */ #define H1R !(buttonInputs2 & 0x40) #define H1U !(buttonInputs2 & 0x20) #define H1L !(buttonInputs2 & 0x10) #define H4U !(buttonInputs2 & 0x08) /* Castle */ #define H4L !(buttonInputs2 & 0x04) #define H4D !(buttonInputs2 & 0x02) #define H4R !(buttonInputs2 & 0x01) #define H3D !(buttonInputs3 & 0x80) /* Weap */ #define H3R !(buttonInputs3 & 0x40) #define H3U !(buttonInputs3 & 0x20) #define H3L !(buttonInputs3 & 0x10) #define H2D !(buttonInputs3 & 0x08) /* Target */ #define H2R !(buttonInputs3 & 0x04) #define H2U !(buttonInputs3 & 0x02) #define H2L !(buttonInputs3 & 0x01) void setup() { pinMode (ss, OUTPUT); SPI.begin(); for (int x = 0; x < 24; x++) { buttonstate[x] = 1; buttonprevstate[x] = 1; } for (int x = 0; x < 3; x++) { pinMode(col[x], OUTPUT); } for (int x = 0; x < 8; x++) { pinMode(row[x], INPUT_PULLUP); } Joystick.useManualSend(true); } void loop() { SPISettings settingsA(1000000, MSBFIRST, SPI_MODE0); SPI.beginTransaction(settingsA); digitalWrite(ss, LOW); // reading only, so data sent does not matter buttonInputs1 = SPI.transfer(0x00); buttonInputs2 = SPI.transfer(0x00); buttonInputs3 = SPI.transfer(0x00); digitalWrite(ss, HIGH); SPI.endTransaction(); digitalWrite(col[0], 0); digitalWrite(col[1], 1); digitalWrite(col[2], 1); delay(10); for (int y = 0; y < 4; y++) { if (digitalRead(row[y]) == 0) { buttonstate[y] = 0; if (buttonstate[y] != buttonprevstate[y]) Joystick.button(19 + y, 1); } else { buttonstate[y] = 1; if (buttonstate[y] != buttonprevstate[y]) Joystick.button(19 + y, 0); } buttonprevstate[y] = buttonstate[y]; } digitalWrite(col[0], 1); digitalWrite(col[1], 0); digitalWrite(col[2], 1); delay(10); for (int y = 0; y < 8; y++) { if (digitalRead(row[y]) == 0) { buttonstate[8 + y] = 0; if (buttonstate[8 + y] != buttonprevstate[8 + y]) Joystick.button(23 + y, 1); } else { buttonstate[8 + y] = 1; if (buttonstate[8 + y] != buttonprevstate[8 + y]) Joystick.button(23 + y, 0); } buttonprevstate[8 + y] = buttonstate[8 + y]; } digitalWrite(col[0], 1); digitalWrite(col[1], 1); digitalWrite(col[2], 0); delay(10); for (int y = 0; y < 8; y++) { if (digitalRead(row[y]) == 0 && y > 3) { buttonstate[16 + y] = 0; if (buttonstate[16 + y] != buttonprevstate[16 + y]) Joystick.button(25 + y, 1); } else { buttonstate[16 + y] = 1; if (buttonstate[16 + y] != buttonprevstate[16 + y]) Joystick.button(25 + y, 0); } buttonprevstate[16 + y] = buttonstate[16 + y]; } roll = analogRead(2); pitch = analogRead(3); throttle1 = analogRead(0); throttle2 = analogRead(1); // throttle = analogRead(3); digitalWrite(ss, HIGH); Joystick.button(1, TG1); Joystick.button(2, THUMB); Joystick.button(3, PINKY); Joystick.button(4, PADDLE); Joystick.button(5, S1); Joystick.button(6, TG2); Joystick.button(7, H2U); Joystick.button(8, H2R); Joystick.button(9, H2D); Joystick.button(10, H2L); Joystick.button(11, H3U); Joystick.button(12, H3R); Joystick.button(13, H3D); Joystick.button(14, H3L); Joystick.button(15, H4U); Joystick.button(16, H4R); Joystick.button(17, H4D); Joystick.button(18, H4L); Joystick.X(roll); Joystick.Y(pitch); Joystick.sliderLeft(throttle1); Joystick.sliderRight(throttle2); int angle = -1; if (H1U) { if (H1R) { angle = 45; } else if (H1L) { angle = 315; } else { angle = 0; } } else if (H1D) { if (H1R) { angle = 135; } else if (H1L) { angle = 225; } else { angle = 180; } } else if (H1R) { angle = 90; } else if (H1L) { angle = 270; } Joystick.hat(angle); Joystick.send_now(); } Thanks, Jacob
  11. I can also see issues with it in MP, but it would be a great idea to incorporate into SP campaigns. Wings over Flanders Fields gives each squadron an allotment of active and reserve aircraft and uses realistic repair times. Creates some great tension when you get damage or systems failure and have to gamble between saving your plane or your life. Of course there's no real dynamic campaigns in DCS, but adding this kind of feature into longer campaigns like say, Georgian Oil War, would encourage more cautious flying and make the campaign feel a lot more alive.
  12. My thoughts were that disarming weapons on takeoff/landing could prevent an accidental detonation during a fire, crash, or gear collapse. I'll have to do some testing to see if it makes a difference as well as if disarming weapons before jettison helps prevent accidental ground detonation.
  13. I was wondering about this, the flight timer and stopwatch don't seem to function at all. The left knob currently just seems to cycle between displaying 1, 2, or 3 white flags on the top face. The right knob doesn't seem to do anything though. I'd like to be able to use as many in cockpit tools as possible for navigation.
  14. Hm. Don't the Soviet IR missiles use either magnetic influence or imaging detonators similar to the AIM-9 though? Don't the pylon power switches ( RV27/28 ) enable the seeker heads and detonators? Pg. 43 refers to RV26 as the "IR/SARH missiles master arm power switch", I don't think it has anything to do with bombs. Maybe what constitutes "arming" is just semantics though. Under the warning on pg. 127 though it describes powering on RV25 - RV28 and CL73 so it seems like that's what the warning is referencing.
  15. So it seems like the manual gives some contradictory statements on the subject. According to pg. 127: "Warning: You must never arm the weapons while on the ground: this is a precautionary measure to ensure you won't activate the weapon by accidentally pressing a launch button or gun trigger, even knowing the weapons launch sequence is blocked while aircraft is on ground (ground lock is engaged by landing gear in extended position)." However the startup checklist on pg. 79/80 tells the pilot that weapons must be armed "prior the taxi procedure". Without doing further research, I would guess with some confidence that pg. 127 is correct, yet in all parking lot/runway starts all weapons systems begin powered on/armed and the AI also arms weapons before takeoff. I believe I also noticed that the AI does not disarm weapons before jettisoning them.
×
×
  • Create New...