Mtnbiker1998 Posted November 12, 2016 Posted November 12, 2016 So I picked up a Microsoft Sidewinder FFB2 and a Thrustmaster FLCS on fleabay for a decent price and decided I'd do this classic mod. Theres a good bit of information on the web about how to do this, But I wanted to make the ultimate guide for all who wish to do this mod, combining all the info I gathered plus my own experiences. I will update this thread as I work on the project. First lets go over my Materials; Microsoft Sidewinder FFB2, found on Ebay for $38 including shipping. Thrustmaster FLCS hotas; Found on Ebay for $50.07 including shipping A Teensy 2.0 Board; found on amazon for $25.96 including shipping I also ordered some pins for the Teensy, But they won't be coming until December so I'll see if I can do without them. Before Any of the packages even came I went ahead and gathered the code for the Teensy. I downloaded the Arduino IDE software https://www.arduino.cc/en/Main/Software and grabbed the code needed. This can be found in many places, but I'll add it in here as well. /* USB FLCS Grip You must select Joystick from the "Tools > USB Type" menu */ // Buttons are muxed into shift registers, use the SPI protocol to read them #include <SPI.h> const int slaveSelectPin = 0; unsigned int buttonInputs1; // data read from SPI unsigned int buttonInputs2; unsigned int buttonInputs3; // Use some macros to clean things up #define S3 !(buttonInputs1 & 0x80) /* Pinky Switch */ #define TG1 !(buttonInputs1 & 0x40) /* Trigger 1 */ #define TG2 !(buttonInputs1 & 0x20) /* Trigger 2 */ #define S1 !(buttonInputs1 & 0x10) /* Nose Wheel Steering */ #define S4 !(buttonInputs1 & 0x08) /* Paddle Switch */ #define S2 !(buttonInputs1 & 0x04) /* Pickle */ #define H1D !(buttonInputs2 & 0x80) /* Trim */ #define H1R !(buttonInputs2 & 0x40) #define H1U !(buttonInputs2 & 0x20) #define H1L !(buttonInputs2 & 0x10) #define H4U !(buttonInputs2 & 0x08) /* CMS */ #define H4L !(buttonInputs2 & 0x04) #define H4D !(buttonInputs2 & 0x02) #define H4R !(buttonInputs2 & 0x01) #define H3D !(buttonInputs3 & 0x80) /* DMS */ #define H3R !(buttonInputs3 & 0x40) #define H3U !(buttonInputs3 & 0x20) #define H3L !(buttonInputs3 & 0x10) #define H2D !(buttonInputs3 & 0x08) /* TMS */ #define H2R !(buttonInputs3 & 0x04) #define H2U !(buttonInputs3 & 0x02) #define H2L !(buttonInputs3 & 0x01) // setup() runs once on boot void setup() { // set the slaveSelectPin as an output: pinMode (slaveSelectPin, OUTPUT); // start the SPI library: SPI.begin(); // configure the joystick to manual send mode. This gives precise // control over when the computer receives updates, but it does // require you to manually call Joystick.send_now(). Joystick.useManualSend(true); } // loop() runs for as long as power is applied void loop() { // take the SS pin low to select the chip digitalWrite(slaveSelectPin,LOW); // send a value of 0 to read the SPI bytes buttonInputs1 = SPI.transfer(0x00); buttonInputs2 = SPI.transfer(0x00); buttonInputs3 = SPI.transfer(0x00); // take the SS pin high to de-select the chip: digitalWrite(slaveSelectPin,HIGH); // Write to joystick buttons Joystick.button(1, TG1); Joystick.button(2, S2); Joystick.button(3, S3); Joystick.button(4, S4); 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.button(19, H1U); //Joystick.button(20, H1R); //Joystick.button(21, H1D); //Joystick.button(22, H1L); // Determine Joystick Hat Position 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); // Because setup configured the Joystick manual send, // the computer does not see any of the changes yet. // This send_now() transmits everything all at once. Joystick.send_now(); } Don't ask how any of that works.. I failed Computer Science senior year. I'm just hoping it works without issue. I saved the program, and left it on my desktop. We'll need that later. Next the Sidewinder came. I plugged it in, made sure everything worked and had some fun flying around in various Modules. FFB is fun! a few days later we got the FLCS and the Teensy. We don't need the teensy yet, So we'll leave that in the bag and keep it in a safe place. The first thing I noticed was four screws right at the base of the grip, So I unscrewed those hoping the grip would pop right out. Its never that easy.. I screwed those back in and had a look at the underside of the base. Ahh, the old "Hide the screws under the rubber feet" trick. I popped them off with my knife and unscrewed them. Popping the bottom off, we find the gimbal as well as some old looking circuit boards. Cool! The pitch gimbal popped off without effort. As you can see in the previous picture the wires (which we need to wire into the teensy) as zip tied to that axis. We cut the zip tie and the axis pops right off. We also cut the wires for the grip, I cut them as close to the circuit board as I could. Figured we'd need the extra slack. The other gimbal didn't co-operate so well. I cut it with some Wire cutters and we were able to slip the grip out from the base, Success! Oh, and those four screws on the top of the base? those needed to come out after all. That bottom part of the shaft has a pin through it, and parts sticking out, so we carefully sawed off that part making sure not to harm the wires inside Well. We've made good progress so far! Tomorrow I'll be going inside the Sidewinder to remove the old grip and attach the new one. I've become rather fond of it in the short period I've known it, so opening it up will take some courage. After that We'll be soldering the teensy up, programming it and sticking it somewhere in the base of the sidewinder. Some people put the teensy in the FLCS grip, but I saw no need to open the stick grip up. I hope this guide helps a lot of people out once It's complete! I also hope at least a few people enjoy following along with me in this little adventure. And if you have any advice, please do share! I can use all the help I can get! Come fly with me, lets fly, lets fly away! -Sinatra [sIGPIC][/sIGPIC] My Specs: Lenovo Y50 with GTX 860m (2GB), i7 4700HQ 2.4GHz, 8GB Ram. Corsair K70(MX Blues are awesome!), Benq GW2760HS monitor, Steelseries V3 Prism headset, TM Warthog Hotas, Sidewinder FFB2 W/ FLCS grip, CH Pro pedals, TrackIR5, KW-908 Jetseat
Sokol1_br Posted November 12, 2016 Posted November 12, 2016 Case you want a "Warthog" paddle for F16 FLCS: http://www.shapeways.com/product/4DH974GQV/paddle-lever-for-cougar-flcs-and-f22-v3?optionId=58971993 :)
Recommended Posts